WordPress является одной из самых популярных открытых систем управления контентом в мире. Несмотря на то, что сначала она была сосредоточена на ведении блога, на протяжении многих лет она превратилась в более гибкую платформу для веб-сайтов в целом. Спустя почти пятнадцать лет развития она довольно отточенная и надежная, но проблемы все еще возникают.
Если вы недавно пытались загрузить сайт на WordPress и вместо этого увидели сообщение «Ошибка установления соединения с базой данных», причина чаще всего одна из следующих:
Давайте пройдемся по этим вопросам по одному за раз, чтобы определить, как они влияют на вас, и как их исправить.
В этом руководстве предполагается следующее:
sudo
доступ к LinuxХороший первый шаг для отладки этой проблемы заключается в попытке входа на сервер, чтобы увидеть, что система работоспособна и 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 являются правильными.
Если вы только что переехали ваш 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
Это позволит открыть текстовый файл, полный переменных конфигурации и пояснительного текста. В начале нашей информации подключения к базе данных:
/** 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 должен быть в состоянии войти в базу данных успешно. Перейдите на свой сайт, чтобы увидеть, что ошибка исчезла.
Все еще не работает? Следующее, что нужно попробовать, это отремонтировать базу данных.
Иногда, из-за неудачного обновления, происходит авария базы данных или неисправный плагин, ваша база данных WordPress может повредиться. Эта проблема может представить себя как ошибку соединения с базой данных, поэтому, если ваша проблема не MySQL сервер или не конфигурационный файл, попробуйте восстановить вашу базу данных.
WordPress предоставляет встроенную утилиту для восстановления базы данных. Она по умолчанию отключена, потому что он не имеет контроля доступа и может быть проблемой безопасности. Мы включим эту функцию, выполним ремонт, а затем отключим ее.
Откройте файл wp-config.php
еще раз:
sudo nano /var/www/html/wp-config.php
В любой пустой строке, вставьте следующее:
define('WP_ALLOW_REPAIR', true);
Это определяет переменную, которая в WordPress указывает, что должно включиться функция восстановления.
Сохраните и закройте файл. Переключитесь в ваш браузер и загрузите следующий адрес, будучи уверенным, что для замены домена или IP-адреса вашего сайта для выделенного участка:
http://www.example.ru/wp-admin/maint/repair.php
Загрузиться страница восстановления базы данных:
Нажмите кнопку Database Repair, и вы попадете на страницу с результатами, где вы можете увидеть чеки и ремонт в режиме реального времени:
После завершения процесса, убедитесь, открыв файл wp-config.php
снова, и удалите строку, которую мы вставили.
Заметили ли вы какие – либо ремонтные работы делаются? Попробуйте ваш сайт снова и проверьте, исчезла ли ошибка. Если была обнаружена нерепарируемых проблема, возможно, потребуется восстановить базу данных из резервной копии, если у вас есть доступная резервная копия БД. Пожалуйста, посмотрите наш учебник, как импортировать и экспортировать базы данных в MySQL для дополнение к нашей статьи, как сделать это.
Если проблемы с базой данных не решены, то мы до сих пор не обнаружили проблему. Это может быть временные проблемы, посмотрите еще один учебник для решения этой проблемы тут.
Большинство проблем «Ошибка установления соединения с базой данных» должны были быть решены с тремя шагами выше. Тем не менее, не может быть более неуловимых вопросы, которые продолжают представлять себя таким образом. Вот еще несколько статей, которые могут быть полезны в поимке и нейтрализации причины этой ошибки: