Способы оплаты Abuse

Ошибка access denied for user root localhost

31.01.2024, 17:30

Если вам нужно настроить резервное копирование базы данных на другой сервер, или протестировать соединение с базой данных из другого сервера, вы можете столкнуться с ошибкой access denied for user root localhost. Причем возникнуть она может даже в том случае, если вы указали верное имя пользователя, базу данных и пароль.

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

Что означает access denied for user root localhost?

Access denied for user root localhost означает, что пользователь root не имеет прав на доступ к базе данных на локальном сервере.

Это может быть вызвано несколькими причинами:

  • пароль введен неверно;
  • по каким-либо причинам у пользователя нет прав на доступ к базе данных;
  • в настройках этого пользователя запрещено авторизоваться с этого сервера;

Для безопасности базы данных в mysql предусмотрена настройка хоста, из которого пользователь может авторизоваться. Изначально для пользователей устанавливается разрешение на авторизацию только с localhost. Как разрешить подключение с других хостов? Для этого достаточно менять настройки. Рассмотрим как это делается с помощью Phpmyadmin и в терминале.

Как исправить ошибку access denied for user root localhost?

Рассмотрим как работать с Phpmyadmin. Открываем Phpmyadmin, проходим авторизацию в программе с правами root и переходим на вкладку "Учетные записи пользователей":

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

Чтобы поменять права для пользователя, на ссылку "Редактировать привилегии" для него, на открывшейся странице перейдите на вкладку "Информация об учетной записи":

Дальше в поле "Имя хоста" необходимо установить значение "Любой хост", так пользователю будет выдано разрешение авторизоваться с любого IP. Если вы хотите разрешить только определенный IP, выберите "Использовать текстовое поле" и укажите нужный адрес или подсеть:

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

При помощи терминала 

Ещё один способ решить ошибку 1045 access denied for user root localhost - использовать терминал. Это немного проще, поскольку вам нужно только выполнить несколько команд:

mysql
> UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
> UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
> FLUSH PRIVILEGES;

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