
Узнайте об ошибке MySQL/MariaDB «Error establishing a database connection» или «Unable to connect to database server» и о том, как исправить эту ошибку.
Убедитесь, что MySQL работает
Если MySQL перестал работать, скрипты и веб-сайты не смогут подключиться. На сервере Linux вы можете проверить, запущен ли MySQL, используя команду :
ps -aux | grep mysql
В результате будет получен список запущенных процессов, в названии которых есть «mysql». В списке будет и команда, которую вы только что выполнили. Если MySQL запущен, то в списке также будет указан процесс MySQL.

Если MySQL/MariaDB не запущен, вы увидите в списке только команду grep.
Запустите MySQL/MariaDB с помощью команды:
- CentOS 7 (MariaDB): systemctl start mariadb
- Ubuntu и Debian (MySQL): service mysql start или /etc/init.d/mysqld start
Обязательно используйте правильное имя пользователя и пароль для вашего пользователя MySQL. Они отличаются от ваших учетных данных для входа в систему IONOS. Необходимые имя пользователя и пароль задаются при создании базы данных MySQL.
Также необходимо задать правильное имя хоста.
Проверка соединения с базой данных из командной строки
Как только вы убедились, что MySQL/MariaDB запущена, следующим шагом будет подключение из командной строки с помощью команды:
mysql -u root -p
Вам будет предложено ввести пароль пользователя root MySQL. По умолчанию пароль для пользователя root MySQL совпадает с оригинальным паролем root вашего сервера.
Если вы измените пароль для корневого пользователя сервера, это не приведет к изменению пароля для корневого пользователя MySQL.
После ввода пароля вы должны оказаться в клиенте MySQL/MariaDB, который должен выглядеть примерно так:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 4172
Server version: 5.5.44-MariaDB MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]
Если у вас возникли проблемы с установлением соединения с MySQL с другим именем пользователя и паролем, проведите этот тест второй раз, заменив root на другое имя пользователя.
Если вместо входа в клиент вы получите ошибку, подобную этой:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Вы вводите неправильный пароль для имени пользователя. Проверьте правильность написания имени пользователя и пароля. Обратите внимание, что имя пользователя чувствительно к регистру — Root не то же самое, что root.
Проверка имени пользователя MySQL
Стоит убедиться, что вы используете правильное написание и заглавную букву для имени пользователя. Чтобы перечислить всех пользователей MySQL/MariaDB, войдите в клиент командной строки от имени root с помощью команды:
mysql -u root -p
Затем перечислите всех пользователей MySQL и их хосты с помощью команды:
select host, user from mysql.user;
Это покажет вам имя пользователя в том виде, в котором оно было создано, а также местоположение (хост), с которого ему разрешено подключаться.
Сбросьте пароль пользователя MySQL
Будьте осторожны при использовании этой команды, особенно при сбросе пароля пользователя root MySQL.
Чтобы сбросить пароль пользователя MySQL/MariaDB, войдите в клиент командной строки от имени root с помощью команды :
mysql -u root -p
Затем сбросьте пароль пользователя с помощью команды:
update mysql.user set password = MD5('(new_password)') where user = "jdoe";
Замените new_password на новый пароль, а jdoe на имя пользователя.
Убедитесь, что пользователь имеет правильные привилегии
Если вы уверены, что имя пользователя и пароль верны, проблема может заключаться в том, что у пользователя нет правильных привилегий (грантов) для этой базы данных.
Чтобы проверить привилегии (гранты) пользователя, войдите в клиент командной строки от имени root с помощью команды:
mysql -u root -p
Затем покажите гранты пользователя с помощью команды:
show grants for 'jdoe'@'localhost';
Замените jdoe на имя пользователя. Если применимо, замените localhost на имя хоста.
Вы должны получить список привилегий, которыми обладает пользователь для соответствующей базы данных. Он должен выглядеть примерно так:
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jdoe'@'localhost' IDENTIFIED BY PASSWORD '*CD2BAEA88178935C438649F12126752DB1B24D7B' |
| GRANT ALL PRIVILEGES ON `example_database`.* TO 'jdoe'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------+
Обратите внимание, что этот пользователь имеет все привилегии для базы данных с именем example_database.
Если пользователю не были предоставлены привилегии ни для одной базы данных, вы увидите что-то вроде этого:
+-------------------------------------------------------------------------------------------------------------+
| Grants for jdoe@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jdoe'@'localhost' IDENTIFIED BY PASSWORD '*00E247AC5F9AF26AE0194B41E1E769DEE1429A29' |
+-------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Обратите внимание, что этот пользователь имеет привилегии USAGE только на «.», и не имеет привилегий на какие-либо базы данных.
Проверка подключения к базе данных из Интернета
Используйте простой сценарий, чтобы проверить, примет ли ваша база данных соединение. Создайте файл database-connection-test.php со следующим содержимым:
<?php
$test_connect = mysql_connect('localhost', 'root', 'password');
if (!$test_connect) {
die('Could not connect: ' . mysql_error());
}
echo 'Successful database connection.';
mysql_close($test_connect);
?>
Замените слово password на пароль вашего корневого пользователя MySQL.
Поместите этот файл в ваш веб-каталог, а затем посетите его в браузере. Если вы сможете подключиться с помощью имени пользователя и пароля корневого MySQL, то вы знаете, что ваша база данных принимает соединения.
Если у вас возникли проблемы с установлением соединения с MySQL с другим именем пользователя и паролем, проведите этот тест во второй раз, заменив root на другое имя пользователя, а пароль на пароль.
Обязательно удалите этот файл после завершения тестов.
Проверьте имя хоста MySQL
Если скрипт размещен на том же сервере, что и база данных MySQL (например, на вашем Linux Cloud Server), то по умолчанию имя хоста будет localhost.
Чтобы перепроверить имя хоста MySQL, войдите в клиент командной строки от имени root с помощью команды:
mysql -u root -p
Затем покажите имя хоста с помощью команды:
SHOW VARIABLES WHERE Variable_name = 'hostname';
Если ваш скрипт обращается к удаленной базе данных, имя хоста будет URL этой базы данных.