WordPress LinuxWeb

WordPress: Error establishing a database connection

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

«Error establishing a database connection» в WordPress значит, что PHP не смог подключиться к MySQL: чаще всего неверные данные в wp-config.php, остановленный MySQL, повреждённые таблицы или исчерпанный лимит соединений.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика на сервере
  5. Проверка и ремонт таблиц

#Что означает ошибка

Сообщение
Error establishing a database connection

WordPress хранит все записи, страницы и настройки в базе MySQL или MariaDB. При каждом открытии страницы он подключается к ней по данным из файла wp-config.php. Если подключение не удалось, вместо сайта показывается белая страница с этим сообщением. Сам код сайта при этом, как правило, цел — проблема в связке «WordPress ↔ база».

Если ошибка появилась внезапно на работавшем сайте, сначала проверьте самое простое: не истёк ли тариф хостинга, не переезжал ли сайт, не менялся ли пароль БД. Если ошибка возникла сразу после установки или переноса — почти наверняка опечатка в wp-config.php. Если она видна только в админке (wp-admin), а не на сайте, возможно, повреждены таблицы — об этом ниже.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Неверные данные подключенияВ wp-config.php указаны имя базы, пользователь, пароль или хост, которых не существует или которые изменились после переноса.Ошибка видна сразу после установки, переноса, смены пароля БД.Сверьте DB_NAME, DB_USER, DB_PASSWORD, DB_HOST с данными из панели хостинга.
MySQL остановлен или недоступенСервер БД упал из-за нехватки памяти, переполнения диска или перезапуска сервера.Не открываются и другие сайты на сервере, systemctl status mysql показывает failed.Освободите место и память, запустите службу, посмотрите журнал ошибок.
Повреждена база данныхПосле аварийного отключения таблицы MyISAM или InnoDB остались в неконсистентном состоянии.В админке появляется сообщение о необходимости ремонта, в логе MySQL — crashed table.Включите WP_ALLOW_REPAIR и запустите ремонт, либо выполните mysqlcheck --repair.
Исчерпан лимит соединенийПри всплеске посещений или атаке боты занимают все слоты max_connections, новые соединения отклоняются.В логе MySQL — Too many connections, ошибка то появляется, то исчезает.Увеличьте лимит, включите кэш-плагин, ограничьте ботов.

#Пошаговое решение

  1. Проверьте, доступен ли сам сервер БДСначала проверьте доступность базы: на своём сервере systemctl status mysql или mariadb, на хостинге — статус услуги в панели и обращения поддержки. Если служба запущена, но WordPress не подключается, выясните точный код MySQL из закрытого журнала; не перезапускайте БД, обслуживающую другие сайты.
  2. Проверьте данные в wp-config.phpОткройте защищённый wp-config.php WordPress и сверьте DB_NAME, DB_USER, DB_HOST, не раскрывая пароль. Если PHP недавно меняли, проверьте расширение mysqli/pdo_mysql именно веб-версии. Не создавайте новую пустую базу вместо существующей.
  3. Проверьте подключение вручнуюНа сервере сайта попробуйте mysql -h реальный_хост -u реальный_пользователь -p имя_базы -e "SELECT 1". Успех подтверждает сетевой доступ и учётную запись; если есть 1045, проверьте права и пароль, если 2002/2003 — адрес и сокет/порт.
  4. Посмотрите место на диске и памятьВ терминале сервера проверьте df -h, df -i и free -h; найдите события OOM в журнале ядра. Если БД завершилась из-за нехватки памяти или диска, восстановите ресурсы безопасным способом и только затем снова попробуйте подключиться.
  5. Запустите ремонт таблицЕсли в журнале явно указана повреждённая таблица, перед любым ремонтом сделайте дамп и определите движок таблиц. Для InnoDB mysqlcheck --auto-repair не обеспечивает универсального восстановления; используйте подходящий способ восстановления из копии. Не включайте публичный режим восстановления WordPress без защиты.
  6. Увеличьте лимит соединений, если ошибка плавающаяПри плавающей ошибке посмотрите журналы MySQL на Too many connections и счётчики Threads_connected, Max_used_connections. Вместо немедленного повышения max_connections найдите всплеск запросов, неосвобождённые соединения и доступную память; проверьте результат под реальной нагрузкой.

#Диагностика на сервере

Проверьте логи — они покажут точную причину. Если MySQL не стартует после сбоя, часто виноваты повреждённые журналы InnoDB; в таком случае сначала сделайте копию каталога /var/lib/mysql и лишь потом пробуйте восстановление.

Linux · Терминал (Bash)КомандаНужен sudo
Статус службы, последние ошибки MySQL и свободное место.
sudo systemctl status mysql
sudo journalctl -u mysql -n 50 --no-pager
sudo tail -n 50 /var/log/mysql/error.log
df -h
free -m

#Проверка и ремонт таблиц

Если подключение возможно, но таблицы повреждены, воспользуйтесь штатной утилитой. Перед ремонтом снимите дамп — это единственная гарантия, что вы не потеряете данные при неудачной операции.

Linux · Терминал (Bash)С осторожностьюНужен sudo
Резервная копия базы и проверка с автоматическим ремонтом.
mysqldump -u имя_пользователя -p имя_базы > backup.sql
# Создавайте дамп вне публичного каталога, проверяйте его полноту.
# Не выполняйте --auto-repair наугад для InnoDB.

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.