15 мая, 2017 11:51 дп
25 768 views
| 1 комментарий
MariaDB, mySQL
WordPress – одна из популярнейших открытых систем управления контентом. Изначально платформа WordPress разрабатывалась для блогов, однако со временем она стала более гибкой и производительной, и теперь подходит для обслуживания практически любого сайта. WordPress разрабатывается почти 15 лет; сегодня это очень надёжная и ошибкоустойчивая система, однако и в ней иногда случаются сбои и ошибки.
Ошибка установки соединения с базой данных (Error Establishing Database Connection) – одна из самых распространённых ошибок WordPress. Обычно её вызывает:
- Сбой БД (чаще всего из-за нехватки памяти).
- Неправильные учётные данные БД в настройках WordPress.
- Нарушение таблиц базы данных WordPress.
В этом руководстве вы узнаете, как определить причину ошибки установки соединения с БД и исправить её.
Требования
- Машина с предустановленной платформой WordPress.
- Доступ к sudo.
- База данных должна быть запущена на одной машине с WordPress.
- Учётные данные БД: имя пользователя, пароль и имя базы данных для WordPress. Эта информация была создана во время начальной настройки WordPress.
1: Проверка памяти сервера
Для начала нужно убедиться, что MySQL работает, и что на сервере достаточно памяти для обработки данных WordPress.
Подключитесь к серверу по SSH:
ssh 8host@your_server_ip
Примечание: Если вы уверены, что правильно указали учётные данные, но у вас по-прежнему возникают проблемы при входе в систему, возможно, на сервере не хватает памяти или он не справляется с большой нагрузкой. Это случается из-за неожиданного роста трафика, и этим можно объяснить ошибку WordPress. Попробуйте перезагрузить сервер и подключиться снова.
Подключившись к серверу, убедитесь, что MySQL работает:
sudo netstat -plt
Команда netstat выводит информацию о сетевой системе сервера. Приведённая выше команда выведет имена программ, которые прослушивают соединения на сокете tcp (флаги –p, –l и –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 в списке, попробуйте запустить сервер вручную. Обычно для этого используется команда:
sudo systemctl start mysql
Примечание: В некоторых дистрибутивах Linux (например, в CentOS) используется mysqld вместо mysql.
Сервер MySQL должен запуститься. Чтобы убедиться в этом, снова запустите netstat и найдите в выводе строку mysqld.
Для корректной работы MySQL и WordPress нужно довольно много памяти. Сервер MySQL может прекратить работу из-за нехватки памяти. Чтобы убедиться, что ошибка произошла по этой причине, проверьте логи ошибок MySQL.
zgrep -a "allocate memory" /var/log/mysql/error.log*
Команда zgrep выполнит поиск по логам, включая более старые логи в архиве с расширением .tar.gz. Команда будет искать в логах error.log* из каталога /var/log/mysql/ все строки с пометкой allocate memory.
2017-04-11T17:38:22.604644Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
Если вы видите на экране такую строку (или несколько таких строк), значит, причина ошибки подключения к БД в нехватке памяти для работы MySQL. Возможно, это произошло из-за резкого роста трафика. Если в выводе много таких строк, значит, сервер сталкивается с нехваткой памяти регулярно. В таком случае рекомендуется переместить ресурс на сервер с большим объёмом памяти. Большинство провайдеров облачного хостинга позволяют просто обновить свой сервер с минимальным временем простоя.
Если команда zgrep не вернула ничего, памяти на сервер достаточно для обработки данных WordPress и MySQL. Если ошибка установки соединения с БД не исчезла, нужно проверить настройки WordPress и убедиться, что в них указаны правильные данные о MySQL.
2: Проверка учётных данных MySQL
Если вы недавно переместили установку WordPress на новый сервер (или сменили хостинг-провайдера), вам нужно обновить информацию о БД в настройках WordPress. Они хранятся в PHP-файле wp-config.php.
Найдите этот файл:
sudo find / -name "wp-config.php"
Команда выполнит поиск в root-каталоге и найдёт все файлы wp-config.php. Если такой файл существует, команда выведет путь к нему:
/var/www/html/wp-config.php
Откройте его в текстовом редакторе:
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). Даже если теперь в файле указана валидная информация о БД, стоит попробовать подключиться к базе данных из командной строки, чтобы убедиться, что ошибка исчезла. Скопируйте из конфигурационного файла и вставьте данные в следующую команду:
mysqlshow -u database_username -p
Команда запросит пароль. Вставьте пароль и нажмите Enter. Если вы при этом получили ошибку Access denied, значит, вы указали неправильное имя пользователя или пароль.
Если учётные данные введены правильно, вы увидите на экране список баз данных, к которым есть доступ у текущего пользователя.
+--------------------+
| Databases |
+--------------------+
| information_schema |
| database_name |
+--------------------+
Убедитесь, что в этом списке есть БД, указанная в конфигурации WordPress. Перезапустите сайт и убедитесь, что ошибка подключения к БД исчезла.
Если исправить ошибку не удалось, попробуйте восстановить БД.
3: Восстановление базы данных WordPress
Иногда база данных WordPress может быть повреждена во время неудачного обновления, сбоя базы данных или из-за неправильного плагина. Эта проблема может отображаться как ошибка установки соединения с базой данных. Если проблему не удалось устранить с помощью предыдущих методов, попробуйте восстановить базу данных.
WordPress предоставляет встроенную утилиту для восстановления БД. По умолчанию она отключена (поскольку к ней нельзя ограничить доступ, а значит, она представляет угрозу безопасности сервера).
Откройте wp-config.php.
sudo nano /var/www/html/wp-config.php
Вставьте в файл такую строку:
define('WP_ALLOW_REPAIR', true);
Эта строка включает функцию восстановления БД.
Сохраните и закройте файл.
Откройте браузер и перейдите по следующему адресу:
http://www.example.com/wp-admin/maint/repair.php
Примечание: Вместо www.example.com укажите свой домен или IP.
На экране появится страница восстановления базы данных:
WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient. […]
Нажмите кнопку Repair Database. На экране появится страница с результатами, где вы сможете отслеживать проверку и исправления в реальном времени.
После этого снова откройте файл wp-config.php и удалите из него строку, которая включает поддержку утилиты восстановления БД.
Проверьте работу сайта. Если WordPress обнаружил в БД ошибки, которые не удалось исправить, попробуйте восстановить БД из резервной копии.
Читайте также: Импорт и экспорт баз данных MySQL и MariaDB
Если утилита WordPress не обнаружила проблем с базой данных, значит, БД также не является источником ошибки соединения. Возможно, это какая-то временная ошибка.
В большинстве случаев ошибку установки соединения можно устранить при помощи предложенных выше методов. Однако иногда источником ошибки являются атаки или нехватка серверных ресурсов.
Часто источником повышенного трафика (а также низкой производительности и ошибок) являются brute-force атаки. Чтобы узнать, как смягчить атаки WordPress, читайте статью Защита WordPress от взлома XML-RPC в Ubuntu 14.04.
Чтобы сэкономить ресурсы сервера, настройте кэширование WordPress. Полезные инструкции вы найдёте в руководстве Настройка кэширования Redis для ускорения WordPress.
Tags: MySQL, WordPress
Добрый день!
Из-за нехватки места на дисках отвалились две архивные базы MDB-ARCH-04 и MDB-ARCH-05.
Начал заниматься реанимацией.
Что сделал:
1) Добавил по 300 Гб к каждому виртуальному диску для того, чтобы можно было сделать
repair баз данных (Собственно повреждены не сами базы и данные в них, а логи транзакций).
2) В соответствии с мануалом Microsoft сделал следующее:
* определил состояние баз (ESEUTIL /MH выдал Clean Shutdown, что вселяло определенные надежды, что сами данные в базе не повреждены)
* определил поврежденный файл лога
* удалил поврежденный файл
* произвел операцию восстановления БД при помощи eseutil /P.
3) Подключил базы
В результате удалось восстановить и подключить базу MDB-ARCH-04, база MDB-ARCH-05 не подключилась, выдает множественные ошибки при подключении:
Не удалось подключить базу данных MDB-ARCH-05. Ошибка: Сбой операции Active Manager. Ошибка: The database action failed. Error: Operation
failed with message: MapiExceptionDatabaseError: Unable to mount database. (hr=0x80004005, ec=1108) Diagnostic context: Lid: 65256 Lid: 10722 StoreEc: 0x454 Lid: 1494 —- Remote Context Beg —- Lid: 45120 dwParam: 0x825C60 Lid: 57728 dwParam: 0x825D2B Lid:
53632 dwParam: 0x825E44 Lid: 61824 dwParam: 0x825E44 Lid: 46144 dwParam: 0x825F00 Lid: 34880 dwParam: 0x825F7D Lid: 34760 StoreEc: 0xFFFFFC07 Lid: 41344 Guid: 50409975-9c76-4bb9-805e-d10c78547559 Lid: 35200 dwParam: 0x9DE4 Lid: 46144 dwParam: 0x826EDE Lid:
34880 dwParam: 0x826EDE Lid: 54472 StoreEc: 0x1388 Lid: 42184 StoreEc: 0x454 Lid: 1750 —- Remote Context End —- Lid: 1047 StoreEc: 0x454 [База данных: MDB-ARCH-05, Сервер: *******
Что бы вы могли в данной ситуации посоветовать?
# |
|
Темы: 308 Сообщения: 2056 Участник с: 20 ноября 2013 |
При вводе команды #pacman -Syu появилось такое сообщение
Позавчера обновлял было всё нормально,сегодня попробовал такая беда.В Arch совсем недавно,что посоветуете,удалить как просит /var/lib/pacman/db.lck ,это не опасно?И отчего такая ошибка могла появиться? Linux Forever! |
lampslave |
# |
Темы: 32 Сообщения: 4800 Участник с: 05 июля 2011 |
В другой консоли pacman не запущен? |
Vadim |
# |
Темы: 308 Сообщения: 2056 Участник с: 20 ноября 2013 |
Нет,только включил компьютер и ничего вообще не запускал.
Linux Forever! |
lampslave |
# |
Темы: 32 Сообщения: 4800 Участник с: 05 июля 2011 |
Тогда сносите файл и обновляйтесь. |
Vadim |
# |
Темы: 308 Сообщения: 2056 Участник с: 20 ноября 2013 |
lampslave ,спасибо,сделал #rm -r /var/lib/pacman/db.lck и после этого обновление прошло как по маслу.
Linux Forever! |
lampslave |
# |
Темы: 32 Сообщения: 4800 Участник с: 05 июля 2011 |
Так и должно быть. Скорее всего в прошлый раз pacman убился, а не завершился нормально, вот блокировка и осталась. |
I did an update (-Syu) this morning. After lunch, my maschine froze and I had to do a cold restart. When I checked pacman -Syu again, I got this error:
$ pacman -Syu
[sudo] password for user:
:: Synchronizing package databases...
error: failed to update core (unable to lock database)
error: failed to update extra (unable to lock database)
error: failed to update community (unable to lock database)
error: failed to synchronize all databases
Looking at pacman:
$ ls -lah /var/lib/pacman/
total 84K
drwxr-xr-x 4 root root 4.0K Sep 12 10:08 .
drwxr-xr-x 36 root root 4.0K Sep 12 00:00 ..
---------- 1 root root 0 Sep 12 10:08 db.lck
drwxr-xr-x 1394 root root 68K Sep 10 17:44 local
drwxr-xr-x 2 root root 4.0K Sep 12 10:08 sync
I am unsure what to do now. How should I proceed to solve this issue?
Thank you for your help.
Last edited by jared (2019-09-12 12:17:12)
Normally I update my system when there is a notification about updates. But for some time I did not get any notification. Firefox was stuck at 105 version and so was KDE plasma at 5.25.x. I was curious and ran sudo pacman -Syu
and got an error, error: failed to synchronize all databases. If you have the encountered the same error, read on how to fix it easily on your Manjaro system.
Before running some commands, let me share the exact error message.
error: failed to synchronize all databases (no servers configured for repository)
Upon investigating, I found that my mirrors file is empty. It was Strange.
cat /etc/pacman.d/mirrorlist
To fix that, it is recommended to run the following command 1st.
sudo pacman-mirrors -f
This will filter all the mirrors and update /etc/pacman.d/mirrorlist
based on the ping to the server, which could be also the nearest zone to you.
Now check again if the mirrors are updated.
cat /etc/pacman.d/mirrorlist
Now you can safely run the update command.
sudo pacman -Syu
Clear cache?
That’s not required, but if you would like to do that. Run the following command.
sudo pacman -Scc
Dependency issue?
If you get a dependency issue for a package, you can remove that package and install it later on.
sudo pacman -R PACKAGE_NAME
If you are still stuck somewhere, checkout the Manjaro forum.