Краткий ответ: «Error establishing a database connection» обычно означает одно из четырёх: сервис БД лежит (часто после OOM-килла или полного диска), в конфиге приложения неправильные учётные данные, приложение смотрит не на тот хост/сокет, или MySQL упёрся в лимит соединений. Сначала проверьте systemctl status mariadb — остановленный сервис является причиной в большинстве случаев.
Обзор
Веб-сервер может быть полностью здоров, а сайт будет показывать ошибку БД — приложение просто не может достучаться или аутентифицироваться в MySQL/MariaDB/PostgreSQL. Диагностика — фиксированная лестница из четырёх ступеней: сервис → диск/память → учётные данные → лимиты.
Что нужно иметь
- Доступ по SSH и файл настроек БД приложения (
wp-config.php,.envи т.д.).
Пошаговая инструкция
- Работает ли база?
Если она мертва, journal обычно говорит почему ещё до перезапуска.sudo systemctl status mariadb sudo journalctl -u mariadb -n 50 - Проверьте двух тихих убийц:
Полный диск или OOM-килл останавливают базы внезапно — сначала исправьте это, иначе она умрёт снова.df -h sudo dmesg -T | grep -i 'out of memory' - Проверьте учётные данные, которые реально использует приложение:
Отказ здесь означает рассинхрон конфига — не тот пароль, пользователь или имя базы.mysql -u APP_USER -p -h 127.0.0.1 APP_DB -e 'SELECT 1;' - Сокет или TCP:
localhostиспользует Unix-сокет,127.0.0.1— TCP. Если приложение ждёт сокет по другому пути, соединения падают, хотя сервер работает. - Лимит соединений:
На потолке — умеренно поднимитеmysql -e "SHOW STATUS LIKE 'Threads_connected'; SHOW VARIABLES LIKE 'max_connections';"max_connectionsили исправьте утечку соединений в приложении.
Типичные проблемы
- Ночные падения: OOM во время бэкапов — классика на малых планах; добавьте swap или уменьшите буферы.
- Работало до смены пароля: конфиг приложения не обновили соответственно.
- Цикл восстановления InnoDB после полного диска: освободите место, затем перезапустите; просмотрите journal на сообщения о повреждениях.
Когда обращаться в поддержку
Поддержка может подтвердить здоровье платформы (хост, хранилище), но содержимое базы и конфиги приложений — внутри вашего unmanaged-сервера. Если сервис не стартует даже со свободным диском и памятью — откройте тикет с последними 50 строками journal.
Частые вопросы
База работала нормально и внезапно остановилась — самая вероятная причина?
На малых серверах две классики: OOM-килл во время всплеска нагрузки или бэкапа и диск, заполненный на 100%. Оба останавливают MySQL внезапно и видны в dmesg и df -h.
Чем localhost отличается от 127.0.0.1 в конфигах БД?
Для клиентов MySQL localhost означает Unix-сокет, а 127.0.0.1 принуждает TCP. Если ожидаемого файла сокета нет, localhost не работает, хотя сам сервер полностью исправен.
Похожие статьи
- На сервере закончилось место на диске
- Высокое использование RAM: быстрая диагностика
- Сайт выдаёт ошибку 500
- Как исправить ошибку 500 в WordPress
Нужна помощь? Связаться с поддержкой Cloud2Y →
