Створюємо цифрові рішення, які працюють на бізнес
Повідомлення Error establishing a database connection означає, що WordPress не зміг встановити або зберегти потрібне з’єднання з MySQL чи MariaDB. Браузер не показує точну причину: однаковий екран з’являється через неправильний пароль, недоступний сервер бази, помилковий DB_HOST, відсутні права, перевищення лімітів або пошкодження таблиць.
Головний ризик — діяти навмання. Заміна файлів WordPress, перевстановлення плагінів або імпорт старої бази рідко є правильним першим кроком. На сайті з формами чи WooCommerce необережне відновлення може стерти заявки й замовлення, які з’явилися після резервної копії.
Якщо сайт приносить продажі, а доступу до журналів і резервних копій немає, безпечніше передати інцидент у межах технічної підтримки сайту. Для самостійної діагностики використовуйте послідовність нижче й фіксуйте кожну зміну.
Контент WordPress не зберігається лише у файлах. Сторінки, записи, користувачі, налаштування, товари, замовлення та значна частина даних плагінів містяться в базі. Під час запиту WordPress читає чотири основні параметри з wp-config.php:
define( 'DB_NAME', 'database_name' );
define( 'DB_USER', 'database_user' );
define( 'DB_PASSWORD', 'database_password' );
define( 'DB_HOST', 'localhost' );
Далі PHP-код звертається до вказаного сервера, MySQL перевіряє користувача та пароль, визначає дозволені джерело й базу, а потім приймає запити до таблиць. Збій на будь-якому етапі може дати однакове загальне повідомлення.
Не вставляйте реальні паролі у скриншоти, чат або заявку до підтримки. Якщо секрет уже опубліковано, змініть його й одразу синхронізуйте нове значення в wp-config.php.
| Симптом | Ймовірний шар | Перша перевірка |
|---|---|---|
| Помилка постійна після перенесення | конфігурація | DB_NAME, DB_USER, DB_PASSWORD, DB_HOST |
| Помилка з’явилася після зміни пароля | облікові дані | пароль користувача бази й wp-config.php |
| Сайт то працює, то падає | навантаження або ліміт | MySQL log, з’єднання, CPU, RAM, диск |
| Усі сайти акаунта недоступні | сервер бази | статус послуги та відповідь хостингу |
| Лише один сайт не працює | конкретна база або користувач | права, назва бази, пошкоджені таблиці |
/wp-admin/ показує інший текст |
таблиці або оновлення | точне повідомлення, стан таблиць |
У журналі Access denied |
автентифікація чи права | користувач, пароль, host і grants |
MySQL server has gone away |
розрив з’єднання | timeout, пакет, довгий запит, перезапуск сервера |
Код відповіді й заголовки проблемної URL можна перевірити через інструменти BB STUDIO. Це допомагає відрізнити помилку застосунку від кешованої сторінки, редиректу чи відповіді проксі.
/wp-admin/ і, за наявності, health/status панель хостингу.wp-config.php і експорт бази, якщо панель ще дає доступ.Схожий екран не завжди означає ту саму проблему, що й помилка 500 у WordPress. Код 500 частіше пов’язаний із виконанням PHP або конфігурацією вебсервера, тоді як database connection error конкретніше вказує на етап доступу до бази.
Спочатку перевіряйте його wp-config.php, базу, користувача та права. Якщо інші проєкти на тому самому хостингу працюють, повне падіння сервера менш імовірне.
Коли кілька незалежних інсталяцій одночасно втрачають базу, перевіряйте статус MySQL/MariaDB, перевантаження, диск, мережу між вебсервером і базою та роботи провайдера.
Якщо оновлення сторінки інколи допомагає, реквізити, імовірно, правильні. Шукайте вичерпання підключень, перезапуски MySQL, блокування, довгі запити, нестачу пам’яті, проблеми диска або нестабільну мережу. Не маскуйте такий інцидент автоматичним перезавантаженням: потрібна першопричина.
Порівняйте час збою з рекламними кампаніями, імпортом товарів, резервним копіюванням, cron, масовою розсилкою та бот-трафіком. Хороший хостинг для сайту має не лише достатній тариф, а й доступ до метрик, журналів і відновлення.
wp-config.phpПорівнюйте параметри не зі старим листом або локальною копією, а з актуальними даними панелі хостингу.
DB_NAMEНазва повинна збігатися символ у символ. На shared hosting до неї часто додається префікс акаунта. Після перенесення нова база може мати іншу назву, навіть якщо домен не змінився.
DB_USERКористувач бази — не обов’язково логін WordPress, FTP чи панелі. Переконайтеся, що він існує і прив’язаний саме до потрібної бази.
DB_PASSWORDПароль чутливий до регістру та спеціальних символів. Помилка часто з’являється після зміни пароля в панелі без оновлення wp-config.php. Не замінюйте символи «типографськими» лапками в редакторі.
DB_HOSTlocalhost підходить не завжди. Провайдер може використовувати окремий hostname, IP, порт або socket. Значення може виглядати як db.example.host:3306. Після міграції не копіюйте старий DB_HOST автоматично.
Перевірте звичайні одинарні лапки, крапку з комою та відсутність випадкових переносів. Редагуйте текстовим редактором без форматування. Перед зміною створіть копію wp-config.php поза публічною директорією.
Якщо маєте SSH, використовуйте стандартний клієнт MySQL із тими самими host, user і database, але не додавайте пароль безпосередньо до команди, якщо він потрапить в історію shell. На керованому хостингу скористайтеся штатним інструментом або попросіть провайдера перевірити з’єднання з вебвузла.
Результат звужує пошук:
Access denied for user — неправильний пароль, користувач, дозволений host або права;Unknown database — помилкова назва чи видалена база;Can't connect to MySQL server — неправильний host/port, сервер не слухає або мережевий блок;Connection refused — служба не працює або порт недоступний;Якщо окреме підключення працює, а WordPress — ні, порівняйте середовище PHP, фактичний файл конфігурації, db.php drop-in і кастомні змінні середовища.
Правильний пароль не гарантує доступ до потрібної бази. MySQL враховує поєднання користувача та джерела підключення. Після перенесення користувач може існувати, але не бути доданим до нової бази або не мати потрібних привілеїв.
На shared hosting найнадійніший порядок:
Не копіюйте випадкові GRANT ALL команди з форуму на production. Надмірні права збільшують наслідки компрометації, а неправильний host у grant усе одно не дасть підключитися.
Коли конфігурація правильна, перевіряйте інфраструктуру:
Для періодичного збою порівняйте графіки CPU, RAM, disk I/O і connections із точним часом помилки. Середнє навантаження за добу може приховати короткий пік, який зупиняє checkout.
Якщо з’єднання встановлюється, але WordPress повідомляє, що окремі таблиці недоступні або потребують відновлення, не поспішайте запускати repair для всієї бази. Спочатку зробіть поточний dump і перевірте журнали.
WordPress має режим ремонту:
define( 'WP_ALLOW_REPAIR', true );
Після цього доступна службова сторінка /wp-admin/maint/repair.php. Вона може працювати без входу, тому константу потрібно видалити одразу після завершення. Repair не відновлює видалені записи, не замінює резервну копію і не виправляє апаратний чи файловий збій сервера.
Перед ремонтом з’ясуйте:
Для складної бази краще виконувати перевірку на копії або staging. Невдалий repair на єдиній production-базі може погіршити відновлення.
Помилка після перенесення часто виникає не через WordPress, а через неповну карту залежностей. Перевірте:
DB_HOST або порт;.env або панелі;wp-config.php;wp-content/db.php від старого хостингу;Професійна розробка сайту має передбачати документацію середовища, контрольоване перенесення і тест відновлення, а не лише копіювання файлів.
У магазині база змінюється постійно: замовлення, статуси оплати, залишки, кошики, сесії та вебхуки можуть з’являтися щохвилини. Тому відкат усієї бази до вчорашньої копії може повернути сайт, але втратити нові продажі.
Перед відновленням:
Не просіть клієнта повторно оплатити, доки не перевірено статус транзакції. Відсутність order у WordPress не означає, що банк не списав кошти.
Зміна database password без відома власника, невідомий користувач, модифікований wp-config.php, сторонній db.php, нові cron-задачі або різкий сплеск запитів можуть вказувати на компрометацію.
У такому випадку недостатньо повернути старий пароль. Потрібно:
Короткий одноразовий збій зазвичай не руйнує позиції, але тривала або регулярна недоступність заважає скануванню, перериває покупки й марнує рекламний бюджет. Не віддавайте database error зі статусом 200 OK: для тимчасового збою коректніше контрольована відповідь 503 Service Unavailable, але її реалізація залежить від інфраструктури.
Після відновлення перевірте ключові URL, sitemap, robots, canonical, форми та checkout. Якщо інцидент тривав довго, проаналізуйте Search Console і логи. Системне SEO-просування включає технічний контроль доступності, а не лише роботу з ключовими словами.
Не обмежуйтеся відкриттям головної. Перевірте:
Потім зафіксуйте першопричину: «змінили пароль і не оновили конфіг», «вичерпано connections через імпорт», «після міграції лишився старий host». Запис «перезапустили сервер» описує дію, а не причину.
DB_HOST, порт, відповідального та контакти провайдера.Орієнтири вартості планових і термінових робіт є на сторінці цін BB STUDIO, а приклади реалізованих рішень — у портфоліо.
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST;WP_ALLOW_REPAIR видалено після використання;Якщо помилка повертається або немає безпечної копії, зв’яжіться з BB STUDIO — локалізуємо збій, відновимо сайт і складемо план профілактики.
Error establishing a database connection — не діагноз, а ознака того, що ланцюг «WordPress → мережа → MySQL → база» не спрацював. Найкоротший шлях до причини: визначити масштаб, зберегти поточний стан, перевірити чотири параметри wp-config.php, протестувати реквізити окремо, дослідити права й стан сервера, а вже потім ремонтувати таблиці або відновлювати копію.
Послідовність важливіша за кількість спроб. Одна підтверджена гіпотеза з журналом змін безпечніша за десять випадкових дій на production.
WordPress не зміг підключитися до MySQL/MariaDB або втратив з’єднання під час роботи. Причиною можуть бути неправильні реквізити, недоступний сервер, права, ліміти чи пошкоджені таблиці.
Так. Потрібні доступ до файлів або SFTP, wp-config.php, панелі бази та журналів. Адмінка сама залежить від бази, тому її недоступність у цьому випадку очікувана.
Лише якщо проблема в даних або таблицях і копія справна. Якщо неправильний пароль, DB_HOST або MySQL недоступний, імпорт не усуне причину. Для магазину повний rollback може втратити нові замовлення.
Використовуйте його лише після копії та за підтвердженої проблеми таблиць. Сторінка ремонту доступна без входу, тому константу потрібно видалити одразу після завершення.
Періодичний збій частіше вказує на вичерпання з’єднань, навантаження, перезапуск MySQL, довгі запити, нестачу ресурсів або мережеву нестабільність, а не на постійно неправильний пароль.
Давайте разом створимо щось дивовижне