#Описание и признаки неисправности
После восстановления файлов и базы через панель управления сайт выдаёт «Error establishing a database connection», SQLSTATE[HY000] [1045]/[2002] или пустую страницу. Архив мог вернуть старые реквизиты, а база и пользователь на новом сервере созданы с другими именами. Нужно убедиться, что база действительно восстановлена, а адрес сервера, пользователь, пароль и права в конфигурации приложения соответствуют текущему экземпляру; не перезаписывайте рабочую базу повторным импортом.
#Как отличить возможные причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Восстановлены только файлыАрхив содержал лишь документный корень, а SQL-дамп не импортирован. | В панели нет ожидаемой базы/таблиц либо база пуста. | Уточнить состав копии и восстановить БД отдельно на тестовой площадке. |
| Реквизиты подключения не совпадаютСайт получил старое имя БД/пароль или использует localhost вместо сетевого сервера. | В журнале 1045 Access denied / 2002 Connection refused. | Сверить настройки БД и конфигурацию приложения. |
| Нет прав на восстановленную базуПользователь существует, но доступ к нужной базе не выдан. | Под этим пользователем подключение успешно, запрос к базе отклоняется. | Проверить права через панель, не выдавать глобальный ALL PRIVILEGES. |
#Пошаговая диагностика и решение
- Остановите повторные восстановления до проверки данныхВ панели откройте журнал последнего восстановления и запишите дату, какие компоненты были отмечены: файлы, база, учётные записи. Если это магазин или форум, временно ограничьте запись средствами приложения после согласования: повторная загрузка старого SQL может стереть заказы и сообщения, поступившие после даты копии. Сохраните текущую копию базы и файлов до попыток исправления.
- Снимите точную ошибку, а не угадывайте парольОткройте сайт в браузере, затем в панели — журналы PHP и веб-сервера этого сайта. Различите 1045 (
Access denied), 1049 (Unknown database), 2002 (Connection refusedили нет сокета) и 2006 (обрыв соединения): у них разные причины. Не включайте подробные сообщения с паролями на общедоступной странице; диагностируйте по серверному журналу. - Убедитесь, что база существует и наполненаВ панели перейдите в раздел баз данных, найдите нужную базу и владельца. Откройте phpMyAdmin или другой штатный интерфейс только по защищённому адресу и просмотрите список таблиц без запуска импорта. Если таблиц нет, найдите SQL-дамп в копии и сначала восстановите его в новую тестовую базу; нельзя подменять текущую рабочую до сравнения данных и согласования времени восстановления.
- Найдите файл конфигурации CMSВ файловом менеджере нужного сайта откройте, например,
wp-config.phpдля WordPress или.envдля приложений Laravel; у других систем путь отличается. Сохраните исходный файл перед редактированием. Найдите имя базы, имя пользователя и адрес сервера. Пароль может быть скрыт; не записывайте его в ответ поддержки и не публикуйте в снимках экрана. Если файл восстановлен из старого архива, в нём могли остаться прежние значения. - Сверьте пользователя и сервер базы в панелиВ разделе баз данных посмотрите имя SQL-пользователя, имя базы, сервер подключения и способ доступа; имя часто включает префикс владельца панели. Если выбран
localhost, проверьте, использует ли приложение локальный Unix-сокет или TCP; перенос на отдельный SQL-сервер требует изменить хост и разрешения. Не создавайте пользователя с пустым паролем и не открывайте порт MySQL всему интернету. - Проверьте соединение отдельно от приложенияЕсли у вас есть SSH и безопасный доступ к mysql-клиенту, используйте
mysql -h 127.0.0.1 -u ИМЯ -p -D ИМЯ_БАЗЫ -e "SELECT 1;", заменив имя и базу реальными значениями;-pзапросит пароль интерактивно. Параметр-hдолжен указывать фактический адрес сервера SQL из панели, а 127.0.0.1 — только пример локального TCP. При успешном подключении в ответе будет 1; 1045 означает реквизиты/разрешения, 2002 — отсутствие подключения. Не записывайте пароль в команду. - Исправьте только обнаруженное расхождениеЕсли тестовый SQL-клиент работает, но сайт нет, исправьте соответствующее поле в конфигурации CMS с сохранением копии файла. Если клиент показывает 1045, измените пароль пользователя через панель либо привяжите его к нужной базе только после проверки резервных копий; затем внесите тот же секрет в защищённый конфигурационный файл. Не сбрасывайте пароль root MySQL и не меняйте права всех баз. Если файл принадлежит другому пользователю после восстановления, проверьте права чтения PHP без
chmod 777. - Пройдите прикладную проверку и обеспечьте откатОткройте сайт, страницу входа и раздел с данными, затем выполните безопасный тест чтения в приложении. Для сайта с записью создайте тестовую запись и удалите её штатным интерфейсом, убедившись, что данные не потерялись. Если возникли новые ошибки, верните резервную копию изменённого конфигурационного файла и сохраните журналы; саму базу не откатывайте автоматически — сначала сравните с копией и текущими изменениями пользователей.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаОБРАЗЕЦ для сервера с mysql-клиентом: замените адрес SQL, имя пользователя и название базы. Пароль вводится по запросу, не в команде. Для чтения нужны действующие учётные данные.
mysql -h 127.0.0.1 -u ИМЯ_ПОЛЬЗОВАТЕЛЯ -p -D ИМЯ_БАЗЫ -e "SELECT 1;"
#Проверка результата и дальнейшие действия
Успех — приложение подключается к нужной восстановленной базе, показывает актуальные данные и сохраняет новые записи; ошибки 1045/1049/2002 отсутствуют. Если соединение из клиента работает, а CMS нет, проверьте её конфигурацию, загруженный кэш переменных окружения и права файла; если не работает даже клиент, сообщите администратору код ошибки без пароля.