Перейти к содержимому

Ошибка установления соединения с базой данных: причины и решение

Что такое «Error establishing a database connection»?

Это одна из самых распространённых и пугающих ошибок WordPress. При заходе на сайт вместо привычного контента вы видите сообщение «Error establishing a database connection» (Ошибка установления соединения с базой данных). Сайт полностью неработоспособен — ни админка, ни публичная часть не открываются.

Ошибка означает, что WordPress не может подключиться к серверу MySQL/MariaDB, где хранятся все ваши записи, страницы, настройки, комментарии и пользователи. Без базы данных WordPress — мёртвый движок.

Основные причины

1. Неверные данные в wp-config.php

Файл wp-config.php содержит реквизиты доступа к базе данных. Если хотя бы один параметр неверен — соединения не будет.

define('DB_NAME', 'имя_базы');
define('DB_USER', 'пользователь');
define('DB_PASSWORD', 'пароль');
define('DB_HOST', 'localhost');

Что проверить:
— Откройте wp-config.php через FTP или файловый менеджер хостинга
— Сравните значения с теми, что указаны в панели управления хостингом (cPanel, ISPmanager, Timeweb и т.д.)
— Имя базы данных и имя пользователя часто выдают в формате u123456_mydb — копируйте точно, включая префикс

2. Хост базы данных недоступен

DB_HOST обычно равен localhost, но на некоторых хостингах используется отдельный сервер баз данных, например mysql.example.com. Возможные проблемы:

  • Сменился хост БД — хостинг-провайдер перенёс БД на другой сервер. Проверьте в техподдержке или панели управления
  • Сервер БД упал — перегрузка, сбой, обновление. Обратитесь в поддержку хостинга
  • Порт нестандартный — MySQL по умолчанию порт 3306. Но если указан нестандартный порт (например, localhost:3307), пишите так: define('DB_HOST', 'localhost:3307')

3. Таблицы базы повреждены

Редкая, но возможная причина — крах таблиц из-за аварийного выключения сервера, сбоя диска или бага плагина.

Решение через phpMyAdmin (или любой MySQL-клиент):

REPAIR TABLE wp_posts;
REPAIR TABLE wp_options;
-- можно починить все таблицы разом:
REPAIR TABLE wp_posts, wp_comments, wp_options, wp_users, wp_usermeta;

Либо, если таблиц много, используйте консоль:

# Подключитесь к MySQL
mysql -u username -p -h localhost databasename
# В MySQL-консоли:
CHECK TABLE wp_posts;
REPAIR TABLE wp_posts;

4. Превышен лимит подключений к MySQL

На дешёвых виртуальных хостингах максимальное количество одновременных подключений к БД жёстко ограничено (часто 10–30). Если ваш сайт (или соседние сайты на том же сервере) исчерпали лимит — новые подключения отклоняются.

Признак: ошибка появляется при пике трафика, а через минуту-другую сайт снова работает.

Что делать:
— Установите плагин кэширования (WP Super Cache, W3 Total Cache, LiteSpeed Cache) — он снизит количество запросов к БД
— Оптимизируйте SQL-запросы: проверьте, нет ли «тяжёлых» плагинов аналитики или логов
— Перейдите на более дорогой тариф с бóльшим лимитом подключений

5. Битый .htaccess (для Apache)

Иногда проблема вовсе не в БД, а в том, что Apache не может прочитать .htaccess и выдаёт 500 Internal Server Error, но браузер показывает странное сообщение о БД.

Решение: переименуйте .htaccess во что-то другое и проверьте сайт:

mv .htaccess .htaccess_backup

Если сайт заработал — зайдите в админку (она тоже должна открыться) → Настройки → Постоянные ссылки → нажмите «Сохранить изменения», чтобы WordPress создал новый .htaccess.

6. Сбой в работе плагина (крайне редко)

Один некачественный плагин может «уронить» подключение к БД — например, если он открывает транзакцию и не закрывает её.

Что делать:
— Переименуйте папку wp-content/plugins/ в wp-content/plugins_off/ (через FTP или файловый менеджер)
— Все плагины отключатся
— Если сайт заработал — возвращайте название папки обратно и включайте плагины по одному, проверяя сайт после каждого

Пошаговый план действий

Когда вы увидели ошибку:

  1. Не паникуйте. Данные в базе, скорее всего, целы.
  2. Проверьте wp-config.php — сверьте DB_NAME, DB_USER, DB_PASSWORD, DB_HOST с данными хостинга.
  3. Зайдите в phpMyAdmin — если база открывается, данные верны, значит проблема не в wp-config.
  4. Проверьте работоспособность MySQLmysqladmin ping или запрос к техподдержке хостинга.
  5. Почините таблицы — REPAIR TABLE в phpMyAdmin или консоли MySQL.
  6. Отключите плагины — переименуйте папку plugins.
  7. Проверьте .htaccess — переименуйте и проверьте.

В 80% случаев помогает шаг 2 или 5.

Профилактика

  • Делайте регулярные бэкапы базы данных (плагины UpdraftPlus, WPvivid, All-in-One WP Migration)
  • Используйте кэширование — меньше запросов к БД, ниже вероятность исчерпать лимит
  • Выбирайте хостинг с надёжной MySQL-инфраструктурой
  • Обновляйте WordPress, плагины и тему — новые версии исправляют утечки соединений