MySQL может вернуть эту ошибку, когда вы пытаетесь подключиться к серверу MySQL: Error 1045 - Access denied for user 'user_name'@'host'...
Актуальная статья MySQL: ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
Это одна из самых распространенных ошибок в MySQL. Обычно она означает, что вы пытаетесь подключиться, используя учетную запись пользователя, не имеющую достаточных привилегий для подключения.
По умолчанию, после установки, MySQL разрешает подключение только к localhost и блокирует любые попытки удаленного подключения, пока привилегии пользователя не будут перенастроены должным образом. Это объясняет, почему вы не можете подключиться с удаленного клиента, в то время как другие серверные программы подключаются без проблем.
Чтобы установить удаленное соединение, вам необходимо переконфигурировать пользователя и дать ему соответствующие привилегии:
1 | GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'host' IDENTIFIED BY "password"; |
Или:
1 | GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' IDENTIFIED BY "Password"; |
Для тестирования вы можете запустить сервер с опцией --skip-grant-tables:
1 | mysqld --skip-grant-tables |
Затем вы можете получить доступ к таблицам грантов MySQL с помощью оператора SHOW GRANTS, чтобы проверить привилегии и изменить их, если хотите:
1 | SHOW GRANTS FOR 'user'@'host'; |
По окончании, промойте привилегии:
1 | FLUSH PRIVILEGES; |
Если проблема возникла с учетной записью root только после обновления MySQL, вероятно, плагин аутентификации по умолчанию изменился на auth_socket. Поэтому вы можете изменить метод аутентификации с auth_socket на mysql_native_password:
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; |
Затем промойте привилегии:
1 | FLUSH PRIVILEGES; |