Причина может быть довольно простой — например, изменился пароль пользователя базы данных. Но иногда проблема находится глубже:
Поэтому первое правило: не переустанавливать Joomla и не восстанавливать базу вслепую, пока не понятно, почему именно соединение не устанавливается.
- сервер базы данных остановлен;
- неверно указан host;
- пользователь базы удалён;
- права пользователя изменились;
- база была перенесена;
- PHP потерял нужный драйвер;
- база обновилась или сменилась версия;
configuration.phpсодержит старые реквизиты;- сайт подключается не к той базе;
- достигнут лимит соединений;
- база доступна локально, но недоступна с веб-сервера.
Сначала определите точный симптом
↑ К оглавлениюПроверьте, что происходит при открытии сайта.
Это может быть:
Error displaying the error page:
Application Instantiation Errorили сообщение о невозможности соединения с базой.
Иногда вместо понятного текста сервер показывает только:
500 Internal Server ErrorВажно понять:
Чем точнее исходное событие, тем быстрее диагностика.
- сайт не открывается вообще;
- административная панель тоже недоступна;
- проблема появилась после переноса;
- ошибка возникла после смены пароля базы;
- проблема появилась после изменения PHP;
- ошибка появилась внезапно без изменений сайта.
Вспомните, что менялось перед ошибкой
↑ К оглавлениюОсобенно важны события:
Если сайт перестал подключаться к базе сразу после одного из этих действий, начинайте именно с него.
- перенос сайта на другой хостинг;
- перенос базы;
- изменение пользователя MySQL;
- смена пароля;
- восстановление backup;
- изменение
configuration.php; - обновление PHP;
- смена версии MySQL или MariaDB;
- изменение настроек сервера;
- смена домена;
- перенос сайта между VPS;
- изменение прав пользователя базы.
Проверьте реквизиты базы в configuration.php
↑ К оглавлениюJoomla хранит параметры подключения к базе в корневом файле:
configuration.phpВ конфигурации используются параметры типа:
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'database_user';
public $password = 'database_password';
public $db = 'database_name';
public $dbprefix = 'abc_';Точные значения зависят от сервера.
Для подключения важны прежде всего:
После переноса именно эти параметры особенно часто остаются от старого сервера. Joomla сама рекомендует проверять настройки базы в configuration.php при проблемах после миграции сайта.
- тип базы;
- host;
- имя пользователя;
- пароль;
- имя базы.
Не предполагайте, что host всегда localhost
↑ К оглавлениюОчень часто база находится на том же сервере, и используется:
localhostНо это не универсальное правило.
На некоторых хостингах database host выглядит иначе:
mysql.example-host.netили представляет собой отдельный IP.
После переноса сайта старое:
localhostможет оказаться неверным.
И наоборот, если сайт раньше подключался к удалённой базе, а теперь база локальная, старый host тоже будет неправильным.
Правильное значение нужно брать из панели хостинга или конфигурации самого database server.
Проверьте имя базы
↑ К оглавлениюОчень распространённая ошибка после переноса:
база импортирована под другим именем, а Joomla продолжает искать старую.
Например:
configuration.php:
client_siteа реально создана:
client_site_newВ таком случае сама база существует, MySQL работает, пользователь существует — но Joomla обращается не туда.
Не ориентируйтесь только на название SQL-файла.
Проверьте фактическое имя базы на сервере.
Проверьте пользователя базы
↑ К оглавлениюУ пользователя должны быть права на нужную базу.
Возможны ситуации:
Joomla historically прямо указывает удалённого пользователя или изменённые username/password среди типичных причин потери соединения.
Особенно часто это происходит после миграции между хостингами.
- пользователь удалён;
- пользователь создан заново;
- имя отличается;
- пароль сменился;
- пользователь существует, но не привязан к базе;
- права выданы не на ту базу;
- доступ разрешён только с другого host.
Проверьте пароль отдельно
↑ К оглавлениюНе меняйте пароль одновременно и в MySQL, и в Joomla, если ещё не знаете, где проблема.
Сначала определите:
Если пароль сменили в панели хостинга, Joomla сама об этом не узнает.
В configuration.php останется старое значение.
- какой пароль сейчас назначен пользователю;
- какой пароль указан в
configuration.php.
Не публикуйте configuration.php
↑ К оглавлениюЭтот файл содержит чувствительные данные.
Не отправляйте его целиком:
Если нужно показать конфигурацию специалисту, скрывайте:
- в чат;
- на форум;
- в публичный репозиторий;
- в тикет без удаления секретов.
password
user
host
db
secretили заменяйте реальные значения заглушками.
Проверьте, работает ли сам сервер базы данных
↑ К оглавлениюДаже идеально настроенная Joomla не сможет подключиться, если MySQL/MariaDB/PostgreSQL не работает.
На VPS нужно проверить состояние database service.
Для MySQL это может быть:
systemctl status mysqlили:
systemctl status mariadbНазвание зависит от системы.
На shared hosting прямого доступа к systemd обычно нет — состояние базы проверяется через панель или поддержку.
Если database server остановлен, править Joomla бессмысленно.
Сначала восстанавливается сама база.
Проверьте соединение вне Joomla
↑ К оглавлениюЭто один из самых полезных тестов.
Если есть SSH и используется MySQL/MariaDB, попробуйте подключиться теми же реквизитами напрямую:
mysql -h HOST -u USER -p DATABASEПосле ввода пароля возможны два основных результата.
Если соединение устанавливается:
Joomla config / PHP driver / application layerстановятся более вероятными причинами.
Если MySQL сам отвечает:
Access deniedили:
Unknown databaseто Joomla пока вообще ни при чём.
Проблема уже воспроизводится на уровне базы.
Разделяйте ошибки Access denied и Unknown database
↑ К оглавлениюЭто разные неисправности.
Например:
Access denied for user ...обычно направляет к:
А:
- username;
- password;
- privileges;
- allowed host.
Unknown database ...означает, что сервер базы найден, но указанной базы на нём нет.
Не меняйте пароль при Unknown database.
И не импортируйте базу заново только из-за Access denied.
Проверьте права пользователя
↑ К оглавлениюДаже правильный логин и пароль не гарантируют нормальную работу.
Пользователь должен иметь необходимые права на Joomla database.
Если пользователь создан, но не получил доступ к базе, соединение или запросы могут завершаться ошибками.
После переноса на shared hosting часто бывает:
В панели хостинга эти действия иногда разделены.
- база создана;
- пользователь создан;
- но пользователь не привязан к базе.
Проверьте database prefix, но не путайте его с соединением
↑ К оглавлениюВ Joomla также есть:
public $dbprefix = 'abc_';Префикс используется для таблиц Joomla. Документация Joomla описывает, что #__ в запросах заменяется на фактический prefix сайта.
Но неправильный prefix — это уже не обязательно ошибка самого TCP/database подключения.
Например, соединение с MySQL может быть успешным, но Joomla затем не найдёт нужные таблицы.
Поэтому различайте:
не могу подключиться к серверу базыи:
подключился, но не нахожу Joomla tablesПроверьте, импортирована ли база вообще
↑ К оглавлениюПосле переноса файлов Joomla иногда забывают импортировать SQL dump.
Получается:
Технически соединение может установиться, но Joomla не сможет нормально запустить приложение.
Проверьте наличие реальных Joomla tables.
Например, таблиц с текущим prefix.
configuration.phpуказывает на новую базу;- пользователь имеет доступ;
- MySQL работает;
- но база пустая.
Не исправляйте отсутствие таблиц созданием их вручную
↑ К оглавлениюЕсли база после переноса пустая или неполная, не создавайте случайные Joomla tables вручную.
Нужно понять:
Создание отдельных таблиц вручную может только замаскировать проблему.
- был ли импорт;
- завершился ли он;
- тот ли dump использовали;
- не оборвался ли импорт;
- соответствует ли dump нужному сайту.
Если ошибка появилась после переноса
↑ К оглавлениюЭто один из наиболее частых сценариев.
Проверяйте по порядку:
Joomla также рекомендует при копировании сайта менять параметры configuration.php под новое серверное окружение.
- импортирована ли нужная база;
- как она называется на новом сервере;
- какой создан database user;
- какой установлен password;
- какой требуется host;
- привязан ли user к database;
- обновлён ли
configuration.php; - есть ли нужный PHP database driver;
- доступны ли таблицы с правильным prefix.
Проверьте PHP-драйвер базы
↑ К оглавлениюJoomla работает с базой через PHP.
Поэтому ситуация:
MySQL работаетещё не означает:
PHP умеет подключаться к MySQLДля Joomla 5.x официальные требования включают PHP database modules:
После смены PHP-version или PHP build нужный модуль может оказаться не установлен.
Проверить модули можно, например:
mysqlnd;- либо
pdo_mysql; - либо
pdo_pgsqlдля PostgreSQL.
php -mНо важно проверить именно ту PHP-конфигурацию, через которую работает сайт.
CLI PHP и PHP-FPM могут использовать разные версии и разные наборы extensions.
Не делайте вывод по php -v
↑ К оглавлениюКоманда:
php -vпоказывает CLI.
Сайт же может работать через:
PHP-FPM 8.xдругой версии.
Поэтому ситуация вполне реальна:
CLI → mysql driver есть
FPM → mysql driver отсутствуети Joomla продолжает падать.
Проверяйте фактический runtime сайта.
Проверьте версию базы
↑ К оглавлениюПоддерживаемые версии database server зависят от версии Joomla.
Для Joomla 5.x текущая официальная документация указывает минимум:
Если сайт перенесли на очень старое окружение, проблема может быть не только в логине и пароле.
Сначала зафиксируйте:
- MySQL 8.0.13;
- MariaDB 10.4.0;
- PostgreSQL 12.0.
Joomla version
PHP version
database engine
database versionИ только потом оценивайте совместимость.
Если база находится на другом сервере
↑ К оглавлениюПри remote database дополнительно проверяйте:
Например, пользователь:
- доступность database host по сети;
- firewall;
- разрешён ли порт;
- слушает ли база внешний интерфейс;
- разрешён ли конкретный client host;
- DNS;
- database user host restrictions.
user@localhostи:
user@10.0.0.5для MySQL — это не обязательно одно и то же разрешение.
После переноса веб-сервера его IP может измениться, и удалённая база перестанет принимать соединение.
Не открывайте MySQL в интернет ради проверки
↑ К оглавлениюЕсли база недоступна с другого сервера, неправильное решение:
откроем порт 3306 всему интернету.
Доступ должен быть ограничен конкретной инфраструктурой.
Если требуется remote database:
должны настраиваться осознанно.
- firewall;
- trusted network;
- VPN/private network;
- bind settings;
- grants
Проверьте DNS для database host
↑ К оглавлениюЕсли в конфигурации используется hostname:
db.example.netпроверьте, разрешается ли он с самого web server.
Проблема может быть не в MySQL, а в DNS.
Особенно если:
- меняли DNS;
- переносили инфраструктуру;
- database hostname изменился;
- сервер использует другой resolver.
Проверьте порт базы
↑ К оглавлениюСтандартный MySQL/MariaDB port:
3306Но инфраструктура может использовать другой.
PostgreSQL обычно:
5432Не подставляйте порт наугад.
Используйте параметры, которые реально выданы хостингом или настроены на сервере.
Если Joomla иногда подключается, а иногда нет
↑ К оглавлениюЭто уже другой класс проблемы.
Если сайт то работает, то выдаёт database connection error, возможны:
В этом случае бессмысленно постоянно менять пароль в configuration.php.
Нужно смотреть:
- перегрузка database server;
- слишком много соединений;
- рестарты MySQL;
- нехватка памяти;
- crash базы;
- network instability;
- connection limit;
- проблемы managed database.
- database logs;
- uptime;
- количество соединений;
- нагрузку;
- память;
- ошибки рестарта.
Проверьте Too many connections
↑ К оглавлениюЕсли журнал базы показывает:
Too many connectionsреквизиты подключения могут быть абсолютно правильными.
Сервер просто отказывается принимать новые соединения.
Тогда нужно разбираться:
Повышать max_connections вслепую не всегда правильно: каждый connection тоже потребляет ресурсы.
- кто создаёт соединения;
- сколько их;
- закрываются ли они;
- какой установлен лимит;
- нет ли зависших процессов;
- соответствует ли нагрузка ресурсам.
Проверьте место на диске
↑ К оглавлениюDatabase server может перестать нормально работать, если заканчивается место.
Это может привести к:
На VPS проверяйте:
- невозможности писать данные;
- аварийному завершению;
- проблемам InnoDB;
- рестартам;
- неожиданным ошибкам Joomla.
df -hТакже может быть важен inode usage.
Если диск заполнен, изменение Joomla configuration проблему не решит.
Проверьте журнал базы
↑ К оглавлениюКогда проблема не объясняется реквизитами, смотрите database log.
Он может показать:
Сначала определите реальную database error, а уже затем принимайте решение.
- crash;
- out of memory;
- corruption;
- permission problem;
- failed startup;
- too many connections;
- storage error;
- recovery after crash.
Не переустанавливайте Joomla
↑ К оглавлениюОшибка подключения к базе сама по себе не означает, что повреждены файлы Joomla.
Переустановка ядра:
Поэтому Joomla core здесь обычно вообще не первый объект ремонта.
- не запустит MySQL;
- не исправит пароль;
- не выдаст права пользователю;
- не импортирует потерянную базу;
- не установит PHP driver;
- не исправит network access.
Не создавайте новую базу вместо старой
↑ К оглавлениюЕсли сайт внезапно перестал подключаться, создание новой пустой базы с тем же именем может сделать ситуацию хуже.
Сначала определите:
где находится исходная база и сохранились ли данные.
Особенно после миграции.
Пустая база не является восстановлением Joomla.
Не меняйте сразу несколько параметров
↑ К оглавлениюПлохая диагностика:
поменяли host
поменяли user
поменяли password
создали новую database
изменили prefix
перезапустили mysqlи сайт заработал.
Теперь непонятно, в чём была исходная причина.
Лучше:
гипотеза
↓
одна проверка
↓
результат
↓
следующий шагТак проблема становится воспроизводимой и исправление — понятным.
Короткий порядок диагностики
↑ К оглавлениюЕсли Joomla не подключается к базе:
- зафиксировать полный текст ошибки;
- вспомнить последнее изменение;
- проверить
configuration.php; - сверить host;
- сверить database name;
- сверить username;
- проверить password;
- проверить права пользователя;
- убедиться, что database server работает;
- проверить подключение к базе отдельно от Joomla;
- проверить PHP database driver;
- после переноса проверить фактический импорт и prefix;
- при remote DB проверить сеть/firewall;
- при плавающих ошибках проверить лимиты и database logs;
- изменить только локализованную причину;
- повторно проверить frontend и
/administrator/.
Чего не стоит делать
↑ К оглавлениюЕсли Joomla не подключается к базе данных, не стоит сразу:
Сначала нужно разделить проблему на уровни:
- переустанавливать Joomla;
- создавать новую пустую базу;
- импортировать случайный старый backup поверх текущей базы;
- менять одновременно host, user и password;
- давать пользователю максимальные права без необходимости;
- открывать database port всему интернету;
- менять prefix наугад;
- повышать лимиты соединений без диагностики;
- публиковать
configuration.phpс паролями; - считать любую database error повреждением базы.
Joomla config
↓
PHP database driver
↓
network
↓
database authentication
↓
database server
↓
database contentsИ найти уровень, на котором соединение действительно ломается.
Частые вопросы
Почему Joomla перестала подключаться к базе данных внезапно?
Даже без изменений файлов Joomla причиной может быть остановка database server, изменение пароля пользователя, потеря прав, сетевой сбой, лимит соединений или проблема самого сервера базы.
Где Joomla хранит настройки подключения к базе?
В корневом configuration.php. Там находятся параметры database host, username, password, database name, type и table prefix. После переноса эти значения нужно сверять с новым сервером.
Что делать, если логин и пароль правильные, но Joomla всё равно не подключается?
Проверьте database host, права пользователя, состояние самой базы, PHP database driver и сетевую доступность. Правильные username/password — только часть соединения.
Может ли Joomla не работать из-за версии MySQL?
Да. Joomla имеет минимальные поддерживаемые версии database engines. Для Joomla 5.x сейчас указаны MySQL 8.0.13+, MariaDB 10.4+ и PostgreSQL 12+.
Нужно ли восстанавливать backup при ошибке подключения к базе?
Не автоматически. Если сама база существует и данные целы, backup может вообще не понадобиться. Сначала нужно определить, сломано соединение или действительно потеряны/повреждены данные.
Нужна помощь с Joomla?
Разберу проблему подключения Joomla к базе данных, проверю конфигурацию, PHP-драйвер, права пользователя, сеть и состояние базы, а затем проверю сайт после исправления.