Если вы занимаетесь разработкой своего сайта сначала на локальном компьютере, то при переносе на хостинг практически всегда столкнётесь с ошибкой установки соединения с базой данных, в английской версии WordPress она звучит так: Error establishing a database connection.
Но совсем необязательно, что это будет из-за переноса сайта, могут быть изменены настройки подключения к базе данных: удалён пользователь, под которым вы подключались, либо же изменён пароль или MySQL вынесен на отдельный сервер.
Также появление этой ошибки может означать недоступность сервера базы данных на вашем хостинге. В любом случае, проблема есть и её нужно решать.
Убедитесь, что имеете исправную резервную копию вашего сайта до любых действий, которые будут предложены ниже в инструкции!
Проявляется ли проблема в wp-admin
Первым делом стоит убедиться, что данное сообщение об ошибке выводится и на сайте, и в административной панели. Для этого попробуйте зайти в админку сайта (wp-admin).
Если в административной панели выводится абсолютно аналогичное сообщение об ошибке установки соединения с базой данных — можете смело переходить к следующему шагу этой инструкции.
Если же вы получили сообщение «Одна или несколько таблиц базы данных недоступны», тогда нужно будет выполнить автоматическое исправление таблиц механизмами WordPress.
Для этого нужно выполнить следующие шаги:
- Открыть файл wp-config.php и добавить в него следующую строку:
[php]define(‘WP_ALLOW_REPAIR’, true);[/php]
- После этого зайти по адресу http://ваш-сайт.ru/wp-admin/maint/repair.php
- Нажать кнопку «Починить базу данных» и дождаться завершения операции.
Это может занять некоторое время, в зависимости от размера данных в таблицах базы вашего сайта.
Запомните, что доступ к этой странице может получить любой пользователь вашего сайта, обратившись к ней по прямому адресу. Поэтому после исправления ошибки обязательно удалите строку WP_ALLOW_REPAIR из файла wp-config.php!
Если после этого шага сайт стал доступен и сообщение об ошибке больше не появляется — можете смело завершить чтение статьи и радоваться, что обошлись лишь испугом.
В ином случае рекомендую продолжить чтение заметки.
Проверка файла wp-config.php
Файл wp-config.php один из самых важных файлов в WordPress — именно в нём прописаны все параметры для нормальной работы вашего сайта. Все настройки для подключения к базе данных тоже находятся именно в этом файле.
Если вдруг вы, или кто-то другой (например, системный администратор), изменили логин или пароль для подключения к базе данных, то внести изменения нужно именно в файл wp-config.php, помните об этом.
За настройки подключения к базе данных MySQL отвечают следующие константы:
[php]define(‘DB_NAME’, ‘название базы данных’);
define(‘DB_USER’, ‘пользователь базы данных’);
define(‘DB_PASSWORD’, ‘пароль пользователя’);
define(‘DB_HOST’, ‘localhost’);[/php]
Имейте в виду, что в константе DB_HOST не всегда будет значение localhost, это может быть и IP адрес сервера, либо же какой-то другой адрес, если вы используете хостинг от МастерХост, например. В любом случае, эту информацию вам нужно уточнить у вашего хостинг-провайдера, либо в личном кабинете вашего хостинга.
Но для большинства хостингов значение DB_HOST будет всё-таки localhost и чаще всего изменять его не придётся.
Стоит упомянуть, что в некоторых случаях вам нужно будет указать нестандартный порт для подключения к MySQL, это делается следующей командой в файле wp-config.php:
[php]define(‘DB_HOST’, ‘127.0.0.1:3351’);[/php]
, где 3351 — порт, на котором «прослушивается» MySQL-сервер. Уточните это значение у вашего системного администратора.
Если вы убедились, что все настройки в файле корректны — тогда стоит полагать, что проблема с подключением к базе данных где-то глубже и нужно копать усерднее.
Проверка работоспособности MySQL сервера
Если ваш хостинг-провайдер позволяет использовать скрипт phpMyAdmin — попробуйте воспользоваться им. Для этого зайти на ваш аккаунт, найдите пункт в меню с упоминанием базы данных и возле него будет ссылка на phpMyAdmin.
Если у вас виртуальный сервер (VPS) и вы используете cPanel или ISPManager, то ссылка на phpMyAdmin будет на главной странице панели управления сервером.
В любом случае, вам нужно попробовать зайти в базу данных вашего сайта. И, если всё удалось, то ещё раз проверить данные для подключения, которые вы внесли в файл wp-config.php из прошлого шага этой инструкции.
Если же не удаётся подключиться к базе данных через phpMyAdmin, то пробуем вот такой ход.
- Создаёте на компьютере файл, назовём его test.php и добавляем в него следующий код:
[php]<?php
$resource = mysql_connect(‘localhost’, ‘пользователь’, ‘пароль’);
if (!$resource) {
die(‘Ошибка при подключении: ‘ . mysql_error());
}
echo ‘Подключено успешно!’;
mysql_close($resource);[/php]
Вместо «пользователь» и «пароль» укажите свои данные для подключения к базе данных. Если у вас VPS — можете использовать учётную запись root.
- Загружайте этот файл на FTP вашего хостинга
- Открывайте в браузере адрес http://ваш-сайт.ru/test.php
- Если на экране отразилось «Ошибка при подключении», то рядом с ней будет выведено сообщение (чаще на английском), по которой в Google или Яндекс можно найти какие-то комментарии
- Если же отобразилось «Подключено успешно», тогда внесите используемые ваши логин и пароль для подключения к базе данных в файл wp-config.php, как в позапрошлом шаге
Если при открытии этого скрипта вы получили сообщение: #1045 – Access denied for user ‘foo’@’%’ (using password: YES), это значит вы используете неправильный логин или пароль. Проверьте ещё раз и попробуйте снова.
В случае, если не удалось подключиться к базе данных ни через phpMyAdmin, ни через файл test.php — рекомендую обратиться в службу поддержки вашего хостинг-провайдера и разобраться в чём дело по телефону. У нормального провайдера круглосуточно работает служба поддержки.
Решения, которые помогли другим
Используйте эти рекомендации на свой страх и риск!
В любом случае, перед началом любых правок у вас на руках должна быть рабочая резервная копия вашего сайта.
Обновление настройки в wp_options
Некоторым пользователям помогало выполнение следующего запроса к базе данных через phpMyAdmin:
[sql]UPDATE wp_options SET option_value=’адрес_вашего_сайта’ WHERE option_name=’siteurl’;[/sql]
Вместо «адрес_вашего_сайта» укажите адрес сайта, чтобы запрос выглядел так:
[sql]UPDATE wp_options SET option_value=’http://ваш-сайт.ru’ WHERE option_name=’siteurl’;[/sql]
Имейте в виду, что таблица wp_options может называться иначе, если вы изменяли префикс таблиц WordPress. В этом случае, вместо wp_ укажите свой префикс.
Подключение под root к базе данных
Если у вас VPS и удалось подключиться с помощью файла test.php к базе данных под пользователем root — тогда попробуйте использовать эти данные для подключения к базе данных вашего сайта через wp-config.php.
Если всё пройдёт нормально и сайт заработает, тогда рекомендую зайти в phpMyAdmin, создать нового пользователя и указать логин и пароль нового пользователя в wp-config.php.
Никогда не работайте под учётной записью суперпользователя на вашем боевом сервере.
Заключение
Решение этой проблемы может быть как мгновенным, так и длительным. Всё зависит от сложности и ситуации, повлёкшей появление этого сообщения.
Если вы знаете ещё какие-то пути решения это проблемы — напишите о них в комментариях и я обновлю заметку.
В любом случае, вы всегда можете обратиться ко мне за консультацией и вместе мы решим возникшую проблему. Успехов!