Исправляем ошибку установки соединения с базой данных

Если вы занимаетесь разработкой своего сайта сначала на локальном компьютере, то при переносе на хостинг практически всегда столкнётесь с ошибкой установки соединения с базой данных, в английской версии WordPress она звучит так: Error establishing a database connection.

Но совсем необязательно, что это будет из-за переноса сайта, могут быть изменены настройки подключения к базе данных: удалён пользователь, под которым вы подключались, либо же изменён пароль или MySQL вынесен на отдельный сервер.

Также появление этой ошибки может означать недоступность сервера базы данных на вашем хостинге. В любом случае, проблема есть и её нужно решать.

Убедитесь, что имеете исправную резервную копию вашего сайта до любых действий, которые будут предложены ниже в инструкции!

Проявляется ли проблема в wp-admin

Первым делом стоит убедиться, что данное сообщение об ошибке выводится и на сайте, и в административной панели. Для этого попробуйте зайти в админку сайта (wp-admin).

Если в административной панели выводится абсолютно аналогичное сообщение об ошибке установки соединения с базой данных — можете смело переходить к следующему шагу этой инструкции.

Если же вы получили сообщение «Одна или несколько таблиц базы данных недоступны», тогда нужно будет выполнить автоматическое исправление таблиц механизмами WordPress.

Для этого нужно выполнить следующие шаги:

  1. Открыть файл wp-config.php и добавить в него следующую строку:
    define('WP_ALLOW_REPAIR', true);
  2. После этого зайти по адресу http://ваш-сайт.ru/wp-admin/maint/repair.php
    Исправляем ошибку установки соединения с базой данных
  3. Нажать кнопку «Починить базу данных» и дождаться завершения операции.
    Это может занять некоторое время, в зависимости от размера данных в таблицах базы вашего сайта.
Запомните, что доступ к этой странице может получить любой пользователь вашего сайта, обратившись к ней по прямому адресу. Поэтому после исправления ошибки обязательно удалите строку WP_ALLOW_REPAIR из файла wp-config.php!

Если после этого шага сайт стал доступен и сообщение об ошибке больше не появляется — можете смело завершить чтение статьи и радоваться, что обошлись лишь испугом.

В ином случае рекомендую продолжить чтение заметки.

Проверка файла wp-config.php

Файл wp-config.php один из самых важных файлов в WordPress — именно в нём прописаны все параметры для нормальной работы вашего сайта. Все настройки для подключения к базе данных тоже находятся именно в этом файле.

Если вдруг вы, или кто-то другой (например, системный администратор), изменили логин или пароль для подключения к базе данных, то внести изменения нужно именно в файл wp-config.php, помните об этом.

За настройки подключения к базе данных MySQL отвечают следующие константы:

define('DB_NAME', 'название базы данных');
define('DB_USER', 'пользователь базы данных');
define('DB_PASSWORD', 'пароль пользователя');
define('DB_HOST', 'localhost');

Имейте в виду, что в константе DB_HOST не всегда будет значение localhost, это может быть и IP адрес сервера, либо же какой-то другой адрес, если вы используете хостинг от МастерХост, например. В любом случае, эту информацию вам нужно уточнить у вашего хостинг-провайдера, либо в личном кабинете вашего хостинга.

Но для большинства хостингов значение DB_HOST будет всё-таки localhost и чаще всего изменять его не придётся.

Стоит упомянуть, что в некоторых случаях вам нужно будет указать нестандартный порт для подключения к MySQL, это делается следующей командой в файле wp-config.php:

define('DB_HOST', '127.0.0.1:3351');

, где 3351 — порт, на котором «прослушивается» MySQL-сервер. Уточните это значение у вашего системного администратора.

Если вы убедились, что все настройки в файле корректны — тогда стоит полагать, что проблема с подключением к базе данных где-то глубже и нужно копать усерднее.

Проверка работоспособности MySQL сервера

Если ваш хостинг-провайдер позволяет использовать скрипт phpMyAdmin — попробуйте воспользоваться им. Для этого зайти на ваш аккаунт, найдите пункт в меню с упоминанием базы данных и возле него будет ссылка на phpMyAdmin.

Если у вас виртуальный сервер (VPS) и вы используете cPanel или ISPManager, то ссылка на phpMyAdmin будет на главной странице панели управления сервером.

В любом случае, вам нужно попробовать зайти в базу данных вашего сайта. И, если всё удалось, то ещё раз проверить данные для подключения, которые вы внесли в файл wp-config.php из прошлого шага этой инструкции.

Если же не удаётся подключиться к базе данных через phpMyAdmin, то пробуем вот такой ход.

  1. Создаёте на компьютере файл, назовём его test.php и добавляем в него следующий код:
    <?php
    $resource = mysql_connect('localhost', 'пользователь', 'пароль');
    if (!$resource) {
    die('Ошибка при подключении: ' . mysql_error());
    }
    echo 'Подключено успешно!';
    mysql_close($resource);

    Вместо «пользователь» и «пароль» укажите свои данные для подключения к базе данных. Если у вас VPS — можете использовать учётную запись root.

  2. Загружайте этот файл на FTP вашего хостинга
  3. Открывайте в браузере адрес http://ваш-сайт.ru/test.php
  4. Если на экране отразилось «Ошибка при подключении», то рядом с ней будет выведено сообщение (чаще на английском), по которой в Google или Яндекс можно найти какие-то комментарии
  5. Если же отобразилось «Подключено успешно», тогда внесите используемые ваши логин и пароль для подключения к базе данных в файл wp-config.php, как в позапрошлом шаге

Если при открытии этого скрипта вы получили сообщение: #1045 – Access denied for user ‘foo’@’%’ (using password: YES), это значит вы используете неправильный логин или пароль. Проверьте ещё раз и попробуйте снова.

В случае, если не удалось подключиться к базе данных ни через phpMyAdmin, ни через файл test.php — рекомендую обратиться в службу поддержки вашего хостинг-провайдера и разобраться в чём дело по телефону. У нормального провайдера круглосуточно работает служба поддержки.

Решения, которые помогли другим

Используйте эти рекомендации на свой страх и риск!
В любом случае, перед началом любых правок у вас на руках должна быть рабочая резервная копия вашего сайта.

Обновление настройки в wp_options

Некоторым пользователям помогало выполнение следующего запроса к базе данных через phpMyAdmin:

UPDATE wp_options SET option_value='адрес_вашего_сайта' WHERE option_name='siteurl';

Вместо «адрес_вашего_сайта» укажите адрес сайта, чтобы запрос выглядел так:

UPDATE wp_options SET option_value='http://ваш-сайт.ru' WHERE option_name='siteurl';

Имейте в виду, что таблица wp_options может называться иначе, если вы изменяли префикс таблиц WordPress. В этом случае, вместо wp_ укажите свой префикс.

Подключение под root к базе данных

Если у вас VPS и удалось подключиться с помощью файла test.php к базе данных под пользователем root — тогда попробуйте использовать эти данные для подключения к базе данных вашего сайта через wp-config.php.

Если всё пройдёт нормально и сайт заработает, тогда рекомендую зайти в phpMyAdmin, создать нового пользователя и указать логин и пароль нового пользователя в wp-config.php.

Никогда не работайте под учётной записью суперпользователя на вашем боевом сервере.

Заключение
Решение этой проблемы может быть как мгновенным, так и длительным. Всё зависит от сложности и ситуации, повлёкшей появление этого сообщения.

Если вы знаете ещё какие-то пути решения это проблемы — напишите о них в комментариях и я обновлю заметку.

В любом случае, вы всегда можете обратиться ко мне за консультацией и вместе мы решим возникшую проблему. Успехов!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Комментарии

  • Александр, СПАСИБО за статью! Изменила пароль, а то что необходимо было и прописать это в файле wp-config.php не знала, утром открываю сайты, выдает ошибку! Чуть не поседела. Благодаря Вашей статье разобралась.

  • Warning: mysqli_real_connect(): (28000/1045): Access denied for user ‘anisei’@’localhost’ (using password: YES) in /home/anisei/htdocs/anisei.com.ua/wp-includes/wp-db.php on line 1424

    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/anisei/htdocs/anisei.com.ua/wp-includes/wp-db.php on line 1454

    Warning: mysql_connect(): Access denied for user ‘anisei’@’localhost’ (using password: YES) in /home/anisei/htdocs/anisei.com.ua/wp-includes/wp-db.php on line 1454
    Ошибка установки соединения с базой данных

    Вот что выбило мне. Пароли в файле config.php и все нужные данные совпадает. Хостинг-провайдер утверждает что все в порядке. Подскажите пожалуйста

    • А судя по ошибке — пароль от юзера anisei как раз не совпадает с тем, что в базе данных.

      Попробуйте вручную подключиться через phpMyAdmin или из консоли mysql на вашем хостинге (если на вашем тарифе доступен SSH) с этими реквизитами для подключения из файла wp-config.php. Если подключение сработает, то видимо что-то не так в wp-config.php, если подключение не удалось, то попробуйте установить простой цифровой пароль для пользователя в MySQL и по новой назначить ему базу данных.

      • А можно еще раз. Я зашел в phpMyAdmin а дальше, к чему подключиться. Спасибо

      • Изменил пароль на новый, цифровой и легкий. Вписал его в config.php. ничего не изменилось.

  • В базе иногда приходится менять не только таблицу wp_options. Мне при переносе мультисайта с тестового домена в онлайн пришлось менять еще wp_blogs. Пример запроса:
    UPDATE wp_blogs SET domain=’новый_адрес’ WHERE domain=’старый_адрес’

  • Очень нужная вещь. Гениально просто.

  • Спасибо. Спасли меня, а то чуть не посидела.

  • Здравствуйте ,в вашей статье все очень подробно расписано, но данные виды решений помогают только в случе переноса сайта или каких-либо изменений с доступом. А у меня проблема возникает в процессе работы сайта. т.е. он загружается ,какое-то время работает, а потом просто отваливается и выдает ошибку «ошибка установки соединения с базой данных». Хостер написал ,что превышено число возможных одновременно установленных подключений, которое у него равно десяти. Подскажите, какие процессы могли вызвать такое число одновременных подключений?

    • Добрый день, Евгения! Любой запрос к базе данных сайта входит в число этих самых ограничений на подключения, чем больше запросов — тем быстрее исчерпывается лимит. Я бы сделал просто — ушёл от этого хостера и не парился. Не видел ещё ни одного, который бы ограничивал эти опции, бред какой-то.

      Если по сути проблемы — когда это проявляется у вас? При обновлении может быть или просто при просмотре сайта?

  • Веб-страница недоступна. ERR_CONNECTION_RESET — так пишет «Хром» при попытке открыть свой сайт на Врдпресс. https://sergioermolaev.wordpress.com/ Не могу на него зайти часто, но не всегда. Проблема то появляется, то исчезает. И некоторые пользователи тоже жалуются, что не могут открыть сайт. Как решить эту проблему?

    • Здравствуйте. К сожалению, не подскажу, с чем связана ваша проблема. С сайтами на wordpress.com я не имел опыта и вряд ли когда-то буду сталкиваться. А в других браузерах проблемы нет?

      • Да, есть. Периодически не открывается с любого браузера и компьютера. Возможно, проблема с сервером или в коде самого сайта?

        • Если у вас есть доступ к файлу wp-config.php, попробуйте включить опцию define(‘WP_DEBUG’, true), она позволит вывести на экран все ошибки на вашем сайте. Но, у меня подозрение, что на wordpress.com эта возможность отключена.

          Я склонен думать, что проблема всё-таки с вашим кодом. Либо с одним из плагинов, либо с кривой темой. Попробуйте отключить все плагины и сменить тему на одну из стандартных WordPress, а потом проверьте ещё раз.

  • Чищу вот свои почтовые ящики и увидел сообщения, верней уведомления с этого сайта. Просто хочу сказать ещё раз спасибо, что помогали мне с моей проблемой. Не описать словами мою благодарность. Да и вообще, Вы помогаете людям, Александр, за бесплатно. Это бесценно. Удачи Вам и топ 1 Вашему блогу! :)

  • Спасибо автору! Реально помог. Привязал новый домен к хостингу, на котором работают 2 блога. Установил новый блог на новый домен, блог работает, а действующие два — перестали. В админку зайти смог, следовательно первый способ и помог. Хочу отметить, что после манипуляций со строкой define(‘WP_ALLOW_REPAIR’, true); в моём случае нужно было подождать около 10 минут и блог заработал, сейчас жду, когда заработает другой. С чем это связано — не знаю, но думаю, что с кэшем блога, но точно не браузера, так как пробовал зайти и с чужого ноута. Ещё раз спасибо!

  • Здравствуйте. Подскажите пожалуйста, не грузится сайт со старых моб. устройств. Верней как не грузится — только главная, категории и поисковые страницы (пишет «ошибка подключения к серверу»), отдельные же страницы и посты работают. Дело не в версии ВП, не в плагинах и т.д. Говоря где-то какой-то ява завалялся или ещё что (началось кстати всё это после установки и удаления моб. плагина WPTouch), вот только где его найти? Аналогичный сайт есть, там всё работает, так что я чуть ли не на все 100 уверен что то из-за того плагина. Подскажите пожалуйста, как искоренить его полностью? Спасибо.

    • Здравствуйте, Владимир.

      Про JavaScript – убеждение на 99.9% неверное, он не влияет на работу базы данных.
      Попробуйте для начала отключить абсолютно все плагины и активировать стандартную тему в WP, например, TwentyEleven.
      Если это не поможет, тогда надо копать глубже. Если поможет — тогда включать по очереди каждый плагин и смотреть.

      Пока мне тяжело что-то конкретное подсказать, не взглянув на сайт.

      • Спасибо за ответ, Александр. У меня как раз стоит тема TwentyEleven, только довольно старая (версия 1.4). Выключил функцию в телефоне «Показать обзор», так сразу же стало заходить, но при этом какая-то ошибка всё же закралась, ведь по ширине на моб. устройстве сайт 320 пикселей, а промотать вправо можно чуть ли не на 5000px. Как ни странно, в проверке гугла на просмотр через моб. устройства показало удовлетворительный результат, видимо из-за того что вчера поставил плагин Exploit Scanner и удалил найденный им вредоносный код, что-то вроде «base64_decode_’DHFD273QW7DGWAFAW6F…'». Хотя остались и другие, по типу «$data = base64_decode( $data );,» и «eval(data);», вот только без понятия – приносят ли они вред либо необходимы в коде. Вот именно из-за таких строк я и подумал, что дело в яве, ведь строчки данных кодов в основном находятся в файлах типа «wp-content/plugins/contact-form-7/includes/js/scripts.js:74». Вот собственно мой сайт: играть-онлайн……..net. На счёт отключения всех плагинов – пробовал, но не помогло, аналогично с обновлением WP версии (не знаю правда могло ли это как-нибудь помочь, но решил сделать хоть что-то). Единственное, что ещё не испытывал, так это обновление самой темы, а от моей версии 1.4 она уже ушла до 2.0.

        • Проверил сейчас ваш сайт на iPhone 6, Samsung Galaxy Tab P1000 и эмуляции мобильных устройств в Google Chrome. Во всех случаях сайт выглядел идентично, все страницы открывались, рубрики тоже безо всяких проблем отображались в браузере. Главная страница и обычная статика отдавалась без ошибок. :-)

          • Видимо тогда я зря переживал. Спасибо большое, Александр. Кстати, довольно интересный блог, много полезного нашёл для WP. :)

            • Самый простой способ убедиться в проблеме — попросить несколько человек со стороны проверить сайт. Если хотя бы у одного из них такая же проблема как и у вас, значит действительно беда. В противном случае всё нормально :-)

              Благодарю! Стараюсь делать полезный блог.

              • Пишу это, чтобы вдруг поможет, если кто столкнётся с такой «проблемой». Конечно такие вещи пустяк, или они могут показаться им, но владельцы сайтов поймут меня, что неспокойно на душе, когда где-то в твоём творении закралась даже крошечная ошибка, а ты знаешь об этом и не можешь исправить. В общем, спустя часов пять разбирания по полочкам шаблона, вордпресс файлов и даже базы данных, я всё-таки понял что проблема не в сторонних кодах, ява скриптах и прочем. Сайт некорректно отображался на телефоне с функцией «показать обзор» (а также с ней и функцией «мобильный вид») только из-за двух больших по размерам картинок. Точнее из-за слишком большого размера файла index.php. Как ни странно, такая вот прореха вордпресс.
                P.S. НИКОГДА не качайте и не устанавливайте всякие навороченные и никому неизвестные плагины и темы. :)
                P.S.S Рекомендую сделать на Вашем сайте смайлики вместо «:)». Комменты будут красивее)
                Надеюсь что кому-то да поможет это)

        • По поводу base64_decode – крайне странное дело, обычно этой функцией скрывают внешние ссылки с вашего сайта, но видеть их в плагине Contact Form 7 удивительно для меня. Попробуйте переустановить его.

  • Здравствуйте! на моём сайте такая бяка(Ошибка установки соединения с базой данных) ни в панель не зайти не на сайт.Wordpress/ С поддержки прислали такое письмо (((В конфигурационном файле Вашей CMS zar……a.ru/public_html/wp-config.php, указан некорректный пароль подключения к БД. Вам необходимо указать текущий пароль или изменить текущий пароль на указанный в конфигурационном файле. Последнее можно сделать в разделе Базы данных MySQL.))) Я профан в этом деле, как это исправить? Если нужно вышлю скиншоты..

  • Благодаря Вашей статье перенёс сайт и подключил базу быстрее чем получил помощь от хостинга.

  • Очень подробная и хорошая статья. Если касаться чисто вопросов базы данных и ее привязки к вордпресс, на мой взгляд рассмотрены практически все моменты. Другое дело, что есть моменты, когда сам сервер баз данных на ВПС или хостинге отваливается и как вы ни исправляйте файлы вордпресса, ничего не получится. Чтобы это проверить в ISP-менеджере или сПанели посмотрите список баз данных после импорта. Если они по нулям или их вообще нет, то значит лег сервер. У меня такое было из-за ошибок плагина W3C-cache. А так бы не было проблем: заходите в панель, называете новую базу данных так, как у вас было на старом хостинге, так же с юзером и паролем, а потом в phpmysql просто импортируете данные в пустую базу. Тут все достаточно просто. Я еще умудрился базу по одному домену привязать к другому и закинуть. В config.php прописал define(‘WP_HOME’, ‘http://новыйтребуемыйдомен’); define(‘WP_SITEURL’, ‘http://новыйтребуемыйдомен’); и все заработало. Это равносильно операции UPDATE wp_options SET option_value=’http://ваш-сайт.ru’ WHERE option_name=’siteurl’; Опять же, если бы не ошибки, которые я нашел в логе ошибок сайта на сервере, все было бы чики-пики

  • Злравствуйте! Я далеко не специалист по сайтостроению. Была проблема после переноса сайта на другой домен (metodd.com), не мог войти в админ панель. Решилось очень просто (после нескольких часов мучений). Удалил полностью уже импортированные таблицы из базы (на хостинге файлы не трогал), вошел по адресу и установил поновой Вордпресс, затем в базу импортировал сохраненный файл базы со старого сайта и, войдя в админ панель, поработал с настройками и плагинами. Сайт заработал.
    Данная статья очень помогла при переносе другого домена.

  • Александр!
    Ваш оптимизм весьма заразителен, согласен с вашим мнением, что решить можно любую проблему, и моя проблема не подпадает под описанное решение в вашем посте.
    Дело было так: решил я скопировать к себе на комп всю информацию с корня сайта, для этого создал отдельную папочку, зашел в FilleZilla и перетянул папку public_html в эту созданную папку. И только лишь я это сделал, как тут же при входе на сайт появилась эта надпись «Ошибка установки соединения с базой данных». Наверное, я очень глупо поступил, да? В общем, сравнил с имеющимися данными и выяснил, что в файле wp-config.php ничего не изменилось — все настройки верны. Через админпанель легко вошел в базу данных, даже откатил её до 13-го числа (до позавчера). Безрезультатно. Ничего не понимаю, в чем может быть причина? Посоветуйте что-нить пожалуйста)

    • Здравствуйте, Илья.

      А на свой компьютер вы с какой целью копировали? Что хотели этим достичь? Если же возникает эта ошибки соединения с базой данных — значит что-то вы всё-таки сделали не так.

      Как вариант — вышлите мне на support@gruz0.ru письмо с доступом к FTP вашего сайта и учётные данные для подключения к хостингу. Я посмотрю вечером, что можно придумать.

  • wp-config.php я правил — дописал имена польз-ля, БД и пароль к БД и заполнил ключи и соли для аутентификации. Ставлю на свой комп, у меня Win 7 Pro sp1 x64.
    «Причём тут вообще, кстати, Denwer и домен на кириллице?»
    В Денвере нельзя создавать папки с кириллическими именами., надо пользовать конвертеры Punicode (http://ru.wikipedia.org/wiki/Punycode), поэтому я подумал что мб дело именно в этом, в инете об этом мало информации.

    • Не понимаю, почему вы вообще привязались к русскоязычному домену на своём локальном компьютере? Назвали localhost и не надо мудрить даже.

      В любом случае, вам надо сделать иначе: удалите ваш wp-config.php и запустите установку заново. Только убедитесь, что в корневой директории WP имеется файл wp-config-sample.php.

      И обязательно на вашем компьютере должен быть установлен и запущен MySQL. Все его настройки вы узнаете при установке Denwer. Чаще всего: хост localhost, логин root, пароль пустой.

      • Не помогло…
        Еще одна возможная причина — раньше я использовал этот же Денвер для создания сайта на CMS GetSimple, там базы данных вообще не используются, но тем не менее мб какие-то настройки поменялись? Думаю переустановить Денвер, но боюсь потом возникнут сложности с редактированием того сайта, вдруг появится такая надобность.

  • Доброго времени, Александр!
    Устанавливаю WP на Денвер, домен на кириллице, к сожалению такой купили :( (переконвертировал Punycode конвертером). Делал все по инструкции — http://dmitriydenisov.com/wordpress/wp- … rver.html, сделал всё до строки «В результате у вас должно открыться окно установки WordPress.», вместо этого выдается ошибка «Ошибка установки соединения с базой данных». Версия WP 3.6.1, версия Денвер-3 2012-09-16, PHP 5.2.
    Почему так получается? Помогите, пожалуйста. Заранее премного благодарен!

    • Здравствуйте, Андрей.

      Так всё правильно, чтобы эта ошибка не появлялась — нужно прописать корректные параметры для подключения к базе данных MySQL. Причём тут вообще, кстати, Denwer и домен на кириллице? Вы ставите на свой локальный компьютер или на хостинг какой-то?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: