Ошибка подключения базы данных модуля arch

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, Сервер: *******

Что бы вы могли в данной ситуации посоветовать? 

#
9 лет, 7 месяцев назад

Vadim avatar

Темы:

308

Сообщения:

2056

Участник с: 20 ноября 2013

При вводе команды #pacman -Syu появилось такое сообщение

  • :: Синхронизируются базы данных пакетов…
    ошибка: не удалось обновить core (не удалось заблокировать базу данных)
    ошибка: не удалось обновить extra (не удалось заблокировать базу данных)
    ошибка: не удалось обновить community (не удалось заблокировать базу данных)
    ошибка: не удалось синхронизировать ни одну базу данных
    ошибка: не удалось начать запрос (не удалось заблокировать базу данных)
    ошибка: не удалось заблокировать базу: Файл существует
    если вы уверены, что pacman не запущен, можете
    удалить /var/lib/pacman/db.lck

Позавчера обновлял было всё нормально,сегодня попробовал такая беда.В Arch совсем недавно,что посоветуете,удалить как просит /var/lib/pacman/db.lck ,это не опасно?И отчего такая ошибка могла появиться?

Linux Forever!

lampslave

#
9 лет, 7 месяцев назад

Темы:

32

Сообщения:

4800

Участник с: 05 июля 2011

В другой консоли pacman не запущен?

Vadim

#
9 лет, 7 месяцев назад

Vadim avatar

Темы:

308

Сообщения:

2056

Участник с: 20 ноября 2013

Нет,только включил компьютер и ничего вообще не запускал.

Linux Forever!

lampslave

#
9 лет, 7 месяцев назад

Темы:

32

Сообщения:

4800

Участник с: 05 июля 2011

Тогда сносите файл и обновляйтесь.

Vadim

#
9 лет, 7 месяцев назад

Vadim avatar

Темы:

308

Сообщения:

2056

Участник с: 20 ноября 2013

lampslave ,спасибо,сделал #rm -r /var/lib/pacman/db.lck и после этого обновление прошло как по маслу.

Linux Forever!

lampslave

#
9 лет, 7 месяцев назад

Темы:

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)

Manjaro-pacman-update-command

Upon investigating, I found that my mirrors file is empty. It was Strange.

cat /etc/pacman.d/mirrorlist

Manjaro-mirrors-list-before

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

Manjaro-mirrors-list-after

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.

  • Ошибка подключения античита vanguard
  • Ошибка подключения аирподс про
  • Ошибка подключения аирподс к телефону
  • Ошибка подключения xiaomi vacuum cleaner
  • Ошибка подключения wow sirus