Ошибка подключения к базе при установке почти никогда не значит «скрипт битый». Значит не сошлись хост, логин, пароль, имя базы или права. Установщик лишь показывает то, что вернул mysqli/PDO.
Ниже — разбор по реальным строкам из тикетов. Идите сверху вниз, не прыгайте сразу в «переустановить PHP».
Типичные тексты ошибок
SQLSTATE[HY000] [1045] Access denied for user ... — логин/пароль неверны или пользователь не имеет права коннектиться с этого хоста. На shared пользователь часто вида u12345_shop, а в форму вбили root «как на локалке».
Unknown database 'xxx' — базы с таким именем нет. Опечатка, другая кодировка имени, или базу создали в другом аккаунте панели.
SQLSTATE[HY000] [2002] Connection refused / No connection could be made — MySQL не слушает порт, служба лежит, или указали неверный хост/порт. Локально: не запущен MicroServer/MariaDB. На VDS: mysqld не стартовал после ребута.
Can't connect to local MySQL server through socket — PHP ищет сокет не там. Попробуйте хост 127.0.0.1 вместо localhost (TCP вместо сокета). Наоборот тоже бывает.
Access denied ... to database при живом логине — пользователь есть, но не привязан к этой базе. В phpMyAdmin/панели выдайте привилегии именно на нужную БД.
Порядок проверки
- Имя базы — скопируйте из панели, не набирайте по памяти.
- Пользователь привязан к этой базе, не «ко всем» наугад и не к соседней.
- Хост: локально
127.0.0.1; на Beget/Timeweb — из карточки БД; иногда отдельный hostname. - Порт: обычно 3306. Если панель пишет другой — укажите его в конфиге, если скрипт умеет.
- Пароль без пробела в начале/конце. Пересоздайте пароль в панели и вставьте заново.
Проверка «в обход установщика»: зайдите в phpMyAdmin теми же данными или выполните простой коннект из CLI. Если панель пускает, а скрипт нет — смотрите, не подставили ли в форму установщика другие значения.
Локальный Windows / MicroServer
MariaDB слушает 127.0.0.1:3306. Если сервер MicroServer не запущен — будет connection refused, и это ожидаемо. Базу создаёте заранее: phpMyAdmin локально. Пользователь root с пустым паролем на старых стендах ещё встречается; на свежих лучше завести отдельного пользователя под проект.
Не путайте имя папки сайта shop.loc с именем базы. Это разные сущности.
Shared-хостинг
На shared часто:
- префикс у имени БД и пользователя обязателен — без него панель не создаст;
- удалённый доступ к MySQL с вашего домашнего IP выключен — и правильно, для сайта на том же сервере нужен localhost;
- после смены пароля в панели старый пароль в конфиге скрипта остаётся — сайт «вчера работал».
Если перенесли сайт с локалки и оставили в конфиге root без пароля — на проде это почти гарантированный 1045. Порядок переноса: перенос скрипта.
VDS и «всё сам»
Служба не запущена:
systemctl status mysql
# или
systemctl status mariadb
Слушает ли порт только localhost — нормально для сайта на этой же машине. Если PHP в Docker/другом контейнере, а MySQL на хосте — 127.0.0.1 из контейнера укажет не туда. Тогда нужен правильный hostname сети, не «как в мануале для shared».
После импорта дампа доступы в конфиге должны совпасть с новым сервером: миграция dump.
Права и «база есть, таблицы не создаются»
Коннект успешен, а установщик падает на CREATE TABLE — у пользователя нет CREATE/ALTER/INDEX. На минимальных грантах «только SELECT/INSERT» сайт потом «откроется», но установка не закончится. Выдайте полный набор на свою базу на время установки; потом резать привилегии можно, если политика безопасности требует.
Кодировка
Ошибка коннекта редко про charset. Но сразу после успешного входа, если кракозябры — база не utf8mb4. Требования: PHP и MySQL. Пересоздать пустую базу в utf8mb4 проще, чем лечить mixed collation потом.
Связанные симптомы
Иногда «ошибка базы» маскируется под HTTP 500: display_errors Off, в логе тот же Access denied. Смотрите error_log — ошибка 500. Если после переноса белый экран и в логе только БД — конфиг не обновили.
Установка с нуля после починки доступов: установка скрипта. Бэкап перед экспериментами с импортом: бэкап.
Проверка коннекта одной строкой
На сервере с PHP CLI:
php -r "mysqli_connect('127.0.0.1','user','pass','db') or die(mysqli_connect_error()); echo 'ok';"
Если здесь ok, а установщик орёт — вы вбиваете в форму другие данные. Если здесь 1045 — чините пользователя, не скрипт. На Windows путь к php — из MicroServer: локальный сервер.
«Работало вчера»
Сменили пароль в панели хостинга, обновили MySQL, переехали на другой контейнер БД у хостера, закончился диск — MySQL не стартует. Диск: мониторинг. После смены пароля обновите конфиг скрипта во всех местах (иногда дубль в local.php).
Права GRANT глазами
SHOW GRANTS FOR 'user'@'localhost';
Должна быть нужная база. Если user@'%' и user@'localhost' — это разные учётки. Установщик подключается одним способом, вы тестируете phpMyAdmin другим — путаница.
Сокет vs TCP ещё раз
Ошибка socket на shared после смены тарифа — попробуйте хост из справки хостера. Иногда пишут localhost:/var/run/mysqld/mysqld.sock. В конфигах скриптов, где поле одно, чаще хватает 127.0.0.1.
После импорта дампа
Коннект есть, сайт открывается, но часть разделов падает — возможно, импорт оборвался. Сверьте число таблиц. Полный цикл: миграция dump, перенос. Кодировка кракозябр — не 1045, но соседняя боль: база должна быть utf8mb4 с самого создания: требования, локально — phpMyAdmin.
Firewall и «внешний» MySQL
На VDS закрыли 3306 — правильно. Если PHP на другой машине вдруг (редко для наших схем) — тогда нужен доступ по приватной сети, не открытие мира. Иначе сканеры. См. firewall, VDS.
Когда коннект починен, а страница всё ещё 500 — в логе уже другая ошибка: ошибка 500. Права на файлы к БД отношения не имеют, но часто чинят параллельно: chmod.
Частые вопросы
Ошибка подключения к базе при установке скрипта?
Чаще всего виноваты хост, логин, имя базы или права пользователя — не «сломанный» скрипт.
Сколько времени занимает «Ошибка подключения к базе MySQL»?
Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.
Нужен ли отдельный сервер?
Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.
Установка готового скрипта php mysql?
Разбор рядом в мануале по этому запросу. установка готового скрипта php mysql
Требования php mysql для скрипта?
Разбор рядом в мануале по этому запросу. требования php mysql для скрипта