ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как отлаживать в WordPress ошибку «Ошибка подключения к базе данных»

Как отлаживать в Wordpress ошибку «Ошибка подключения к базе данных»

Введение

WordPress является одной из самых популярных открытых систем управления контентом в мире. Несмотря на то, что сначала она была сосредоточена на ведении блога, на протяжении многих лет она превратилась в более гибкую платформу для веб-сайтов в целом. Спустя почти пятнадцать лет развития она довольно отточенная и надежная, но проблемы все еще возникают.

Если вы недавно пытались загрузить сайт на WordPress и вместо этого увидели сообщение «Ошибка установления соединения с базой данных», причина чаще всего одна из следующих:

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

Предпосылки

В этом руководстве предполагается следующее:

Шаг 1 – Проверьте ресурсы памяти сервера

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

Войдите на сервер через SSH:

ssh destroyer@your_server_ip

 

Если вам нужна помощь при входе в сервер, можно найти в статье как подключиться к Linux с помощью SSH.

Примечание: Если вы уверены, что ваши соединительные детали правильно, но у вас по- прежнему возникают проблемы при входе, это может быть, что ваш сервер находится вне памяти или при очень большой нагрузке. Это может быть из – за внезапного всплеска трафика на ваш сайт, и может объяснить ошибку WordPress. Вам, возможно, потребуется перезагрузить сервер, прежде чем вы сможете войти в систему .

Теперь, когда мы вошли в систему успешно, давайте проверим, что наш сервер MySQL работает:

sudo netstat -plt

 

Команда netstat выводит информацию о сетевой системе нашего сервера. В этом случае, нам нужно названия программ ( -p) прослушивает соединения ( -l) на сокет TCP ( -t). Проверьте вывод на экране mysqld, выделены ниже:

Вывод
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:mysql         *:*                     LISTEN      1958/mysqld
tcp        0      0 *:ssh                   *:*                     LISTEN      2205/sshd
tcp        0      0 localhost:smtp          *:*                     LISTEN      2361/master
tcp6       0      0 [::]:http               [::]:*                  LISTEN      16091/apache2
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      2205/sshd
tcp6       0      0 ip6-localhost:smtp      [::]:*                  LISTEN      2361/master

 

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

sudo systemctl start mysql

 

Некоторые дистрибутивы Linux (CentOS, в частности) используют mysqld вместо службы mysql. Замените в зависимости от системы.

MySQL должен заработать. Чтобы проверить, повторите команду netstat , которую мы использовали выше, и проверьте вывод для процесса mysqld.

MySQL и WordPress нужен хороший объем памяти для правильной работы. Если MySQL прекращает из-за ситуации с малым количеством памяти, мы должны увидеть доказательство этого, в своих журналах ошибок. Давайте посмотрим:

zgrep -a "allocate memory" /var/log/mysql/error.log*

 

zgrep будет искать через лог – файлы, в том числе и старые файлы, которые были заархивированы в виде файлов с расширением .tar.gz. Мы ищем строку, содержащую allocate memory, в любом файле error.log* в каталоге /var/log/mysql/.

Вывод
2017-04-11T17:38:22.604644Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

 

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

Если вы не видите вывода после выполнения команды zgrep, ваш сервер не работает не из-за памяти. Если ваш сайт по – прежнему выдает ошибки, переходите к следующему шагу, где мы будем смотреть на нашу конфигурацию WordPress и убедимся, что регистрационные данные в MySQL являются правильными.

Шаг 2 – Проверка учетных данных базы данных для входа

Если вы только что переехали ваш WordPress и выбрали между серверами или хостинг – провайдером, возможно, вам потребуется обновить данные подключения к базе данных. Они хранятся на сервере в PHP файле с именем wp-config.php.

Во- первых, давайте найдем наш файл wp-config.php:

sudo find / -name "wp-config.php"

 

Этот поиск пройдет все в корневом каталоге ( /), и найдет файл с именем wp-config.php. Если такой файл существует, то на выводе появиться полный путь:

Вывод
/var/www/html/wp-config.php

 

Теперь используйте ваш любимый текстовый редактор, чтобы открыть файл конфигурации. Мы будем использовать здесь редактор nano:

sudo nano /var/www/html/wp-config.php

 

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

wp-config.php
/** The name of the database for WordPress */
define('DB_NAME', 'database_name');

/** MySQL database username */
define('DB_USER', 'database_username');

/** MySQL database password */
define('DB_PASSWORD', 'database_password');

 

Убедитесь, что эти три переменные являются правильными на основе ваших записей. Если они не выглядят правильно, обновите, по мере необходимости, сохраните и выйдите ( CTRL-O, а затем, CTRL-X если вы используете nano). Даже если информация выглядела правильно, то стоит пытаться подключиться к базе данных из командной строки, просто чтобы убедиться. Скопируйте и вставьте детали прямо из файла конфигурации в следующую команду:

mysqlshow -u database_username -p

 

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

Вывод
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| database_name      |
+--------------------+

 

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

Все еще не работает? Следующее, что нужно попробовать, это отремонтировать базу данных.

Шаг 3 – Восстановление базы данных WordPress

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

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

Откройте файл wp-config.php еще раз:

sudo nano /var/www/html/wp-config.php

 

В любой пустой строке, вставьте следующее:

wp-config.php
define('WP_ALLOW_REPAIR', true);

 

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

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

http://www.example.ru/wp-admin/maint/repair.php

 

Загрузиться страница восстановления базы данных:

страница ремонта базы данных в WordPress

Нажмите кнопку Database Repair, и вы попадете на страницу с результатами, где вы можете увидеть чеки и ремонт в режиме реального времени:

Страница результатов ремонта базы данных в WordPress

После завершения процесса, убедитесь, открыв файл wp-config.php снова, и удалите строку, которую мы вставили.

Заметили ли вы какие – либо ремонтные работы делаются? Попробуйте ваш сайт снова и проверьте, исчезла ли ошибка. Если была обнаружена нерепарируемых проблема, возможно, потребуется восстановить базу данных из резервной копии, если у вас есть доступная резервная копия БД. Пожалуйста, посмотрите наш учебник, как импортировать и экспортировать базы данных в MySQL для дополнение к нашей статьи, как сделать это.

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

Вывод

Большинство проблем «Ошибка установления соединения с базой данных» должны были быть решены с тремя шагами выше. Тем не менее, не может быть более неуловимых вопросы, которые продолжают представлять себя таким образом. Вот еще несколько статей, которые могут быть полезны в поимке и нейтрализации причины этой ошибки:

Exit mobile version