Если вам нужно настроить резервное копирование базы данных на другой сервер, или протестировать соединение с базой данных из другого сервера, вы можете столкнуться с ошибкой access denied for user root localhost. Причем возникнуть она может даже в том случае, если вы указали верное имя пользователя, базу данных и пароль.
В этой статье рассмотрим почему возникает эта ошибка, а также как ее исправить и подключиться к MySQL из другого сервера через интернет.
Access denied for user root localhost означает, что пользователь root не имеет прав на доступ к базе данных на локальном сервере.
Это может быть вызвано несколькими причинами:
Для безопасности базы данных в mysql предусмотрена настройка хоста, из которого пользователь может авторизоваться. Изначально для пользователей устанавливается разрешение на авторизацию только с localhost. Как разрешить подключение с других хостов? Для этого достаточно менять настройки. Рассмотрим как это делается с помощью Phpmyadmin и в терминале.
Рассмотрим как работать с Phpmyadmin. Открываем Phpmyadmin, проходим авторизацию в программе с правами root и переходим на вкладку "Учетные записи пользователей":
Дальше вы увидите кроме обычных полей, поле "имя хоста", которое указывает с какого хоста может подключаться пользователь. Если в этом поле написано localhost, значит этот пользователь может авторизоваться только с локальной машины.
Чтобы поменять права для пользователя, на ссылку "Редактировать привилегии" для него, на открывшейся странице перейдите на вкладку "Информация об учетной записи":
Дальше в поле "Имя хоста" необходимо установить значение "Любой хост", так пользователю будет выдано разрешение авторизоваться с любого IP. Если вы хотите разрешить только определенный IP, выберите "Использовать текстовое поле" и укажите нужный адрес или подсеть:
В завершении нужно только нажать кнопку "Вперед" и вы сохраните настройки. Если вам нужно чтобы был доступ и с локального IP, и с другого, то необходимо создать еще одного пользователя. После этого вы сможете авторизоваться от имени этого пользователя.
Ещё один способ решить ошибку 1045 access denied for user root localhost - использовать терминал. Это немного проще, поскольку вам нужно только выполнить несколько команд:
Уже после этого, вы можете подключаться к серверу баз данных с любого другого компьютера и не получите никаких ошибок. Вместо символа %, можно указать нужный ip или localhost, если ограничение нужно вернуть обратно.