Решение проблем 8 мин чтения

Ошибка установки соединения с базой данных WordPress

Что делать, если WordPress пишет «Ошибка установки соединения с базой данных»: проверка wp-config.php, доступность MySQL, восстановление таблиц, лимиты хостинга и перенос сайта.

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

Как понять, где проблема

Откройте админку по адресу /wp-admin/. Здесь возможны два варианта:

  • Та же ошибка, что и на сайте. WordPress вообще не может подключиться к базе: неверные данные доступа, недоступен сервер MySQL, исчерпаны лимиты.
  • Сообщение о необходимости восстановить базу данных. Соединение есть, но повреждены таблицы.

От этого зависит дальнейший путь.

Шаг 1. Проверьте данные в wp-config.php

Самая частая причина — неверные параметры подключения. Откройте wp-config.php в корне сайта (через FTP или файловый менеджер) и найдите блок:

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

Сверьте каждое значение с тем, что указано в панели хостинга в разделе баз данных MySQL:

  • DB_NAME — полное имя базы. Многие хостинги добавляют к нему префикс аккаунта, и без него подключение не работает.
  • DB_USER — пользователь, которому выданы права на эту базу. Пользователь может существовать, но не быть привязанным к нужной базе.
  • DB_PASSWORD — если пароль меняли в панели, обновите его и в wp-config.php. Следите за пробелами и спецсимволами в начале и в конце значения.
  • DB_HOST — чаще всего localhost, но у некоторых хостингов это отдельный адрес сервера баз данных. Точное значение указано в панели или в справке хостинга.

Ещё одно место, где бывают сбои, — префикс таблиц:

$table_prefix = 'wp_';

Он должен совпадать с реальным префиксом таблиц в базе. Это касается ситуации, когда соединение есть, но WordPress не находит свои таблицы и предлагает начать установку заново.

Проверка подключения отдельным скриптом

Чтобы исключить ошибки в самом WordPress, создайте временный файл db-test.php в корне сайта:

<?php
$link = mysqli_connect( 'localhost', 'пользователь_базы', 'пароль', 'имя_базы' );
if ( ! $link ) {
    echo 'Ошибка: ' . mysqli_connect_error();
} else {
    echo 'Подключение успешно';
    mysqli_close( $link );
}

Откройте его в браузере. Текст ошибки подскажет причину: неверный пароль (Access denied), неизвестная база (Unknown database) или недоступный сервер. Сразу после проверки удалите файл: в нём лежит пароль от базы.

Шаг 2. Убедитесь, что MySQL работает

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

  1. Откройте phpMyAdmin из панели хостинга. Если он тоже не открывается или выдаёт ошибку подключения, проблема на стороне сервера.
  2. Посмотрите статус сервера и новости на сайте или в панели хостинга: бывают технические работы.
  3. Обратитесь в поддержку хостинга и приложите текст ошибки. На VPS проверьте службу командой systemctl status mysql (или mariadb, в зависимости от установки) и перезапустите её при необходимости.

Шаг 3. Восстановите повреждённые таблицы

Таблицы могут повредиться при сбое сервера, нехватке места на диске или оборванной записи. Тогда в админке появляется сообщение о необходимости восстановления. Встроенный инструмент WordPress включается в wp-config.php:

define( 'WP_ALLOW_REPAIR', true );

Добавьте эту строку перед /* That's all, stop editing! */, а затем откройте в браузере:

https://example.ru/wp-admin/maint/repair.php

Нажмите «Восстановить базу данных» (или «Восстановить и оптимизировать»). Дождитесь отчёта.

Важно: после восстановления обязательно удалите строку WP_ALLOW_REPAIR из wp-config.php. Пока она есть, страница repair.php доступна любому посетителю без авторизации.

Альтернативы:

  • в phpMyAdmin отметьте таблицы и в списке действий выберите «Исправить таблицу»;
  • в WP-CLI выполните команды:
wp db check
wp db repair

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

Шаг 4. Лимиты и нагрузка

На бюджетных тарифах хостинга действуют ограничения на число одновременных подключений к MySQL и на нагрузку. При всплеске трафика, из-за сканирующих ботов или тяжёлого плагина новые подключения отклоняются, и сайт то работает, то показывает ошибку.

Что проверить:

  • в панели хостинга посмотрите графики нагрузки и сообщения о превышении лимитов;
  • в журнале доступа найдите всплески запросов, особенно к wp-login.php и xmlrpc.php;
  • отключите тяжёлые плагины (генераторы отчётов, статистика, связанные записи) и включите кэширование страниц;
  • если лимит упирается в тариф, перейдите на более мощный план или VPS.

Если база занимает весь выделенный объём на диске, MySQL не сможет писать данные. Очистите ревизии записей, спам-комментарии и устаревшие данные плагинов или увеличьте квоту.

Ошибка после переноса сайта

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

  1. База данных создана на новом хостинге, дамп из старой базы импортирован без ошибок.
  2. В wp-config.php прописаны новые DB_NAME, DB_USER, DB_PASSWORD и DB_HOST, а не данные со старого хостинга.
  3. Пользователю базы выданы все права на эту базу.
  4. Префикс $table_prefix совпадает с префиксом таблиц в импортированном дампе.
  5. Размер дампа не обрезан: при импорте через phpMyAdmin большие файлы иногда обрываются, тогда стоит импортировать частями или по SSH.

Если сайт переехал на новый домен, после восстановления подключения необходимо обновить адреса в базе. Для этого подойдёт WP-CLI:

wp search-replace 'https://old.example.ru' 'https://new.example.ru' --skip-columns=guid

Команда корректно обрабатывает сериализованные данные, в отличие от обычной замены в SQL-дампе. Перед запуском сделайте копию базы.

Что сделать после исправления

  • Удалите временные файлы (db-test.php) и строку WP_ALLOW_REPAIR.
  • Включите регулярные резервные копии базы и файлов.
  • Смените пароль пользователя базы данных, если он мог попасть к посторонним.

Если не получилось

Если ошибка не уходит, а проблема может быть на стороне сервера или в повреждённых данных, сайт лучше передать специалисту. Мы проверим подключение, восстановим базу из копии или починим таблицы в рамках технической поддержки WordPress. Не вносите в базу необратимых изменений без резервной копии.

Оставить заявку

Опишите, что нужно сделать, — ответим в течение рабочего дня и назовём сроки и стоимость.