MySQL 访问被拒绝,用户 'root'@'localhost'
使用本指南,您将发现三种解决此错误的方法。
这个错误是什么意思?
理解这个错误的最好方法是将其分解为单个组成部分。该错误发生在你尝试在本地计算机上登录到你的MySQL实例时,因此称为“localhost”。
示例如下:
mysql -u root -p错误的组成部分如下:
- 错误 1045 (28000) - 分别指的是错误代码和 SQLSTATE。例如,在 MySQL 和 MariaDB 中,错误代码 1045 意味着对于该用户名和指定密码的访问被拒绝。
- 第二个是消息字符串。错误消息的格式为:用户 '‘%s’'@'%'s’' 访问被拒绝(使用密码:%s)。
注意:错误信息中的第一个 %s 指的是用户名,而第二个 %s 指的是主机。
解决方案 1:Sudo 进入 MySQL
解决此错误的第一种也是最常见的方法是以sudo身份进入您的MySQL实例并将auth_plugin设置为mysql_native_password。
打开你的终端并运行:
sudo mysql输入账户的密码并继续。
接下来,修改auth_plugin并为root账户设置一个新密码,如下所示:
ALTER USER 'root@localhost' IDENTIFIED WITH mysql-native_password BY 'password';更改身份验证插件将允许您登录到服务器。
接下来,刷新权限以更新权限表:
FLUSH PRIVILEGES;最后,退出终端并尝试登录:
mysql -u root -p解决方案2 - 手动编辑配置文件
如果错误仍然存在,您可能需要编辑MySQL配置文件。在大多数情况下,它位于/etc或/etc/mysql目录下,文件名为my.cnf。
在Windows和Mac用户的MySQL安装文件夹中找到此文件。
如果文件不存在,创建它。
用文本编辑器打开文件,并找到 mysqld 块。
nano /etc/mysql/my.cnf在[mysqld]区块下,添加以下条目。
skip-grant-tables关闭并保存文件。
接下来,重新启动MySQL服务器并登录。
sudo service mysql restart
mysql -u root -p登录后,刷新权限并设置新密码:
FLUSH PRIVILEGES;
ALTER USER 'root@localhost' IDENTIFIED BY 'password';请确保将上面的命令替换为一个安全的密码。
完成后,编辑 my.cnf 文件并删除我们之前添加的条目。
重启 MySQL 服务器并用新密码登录。
解决方案 3 – 以安全模式启动 MySQL
MySQL为您提供了mysqld_safe工具,用于启动MySQL服务器。该工具允许我们在启动和重启服务器时指定安全功能,以用于诊断错误。
首先停止MySQL服务器。
sudo service mysql stop接下来,以无身份验证的方式启动 MySQL;
mysqld_safe --skip-grant-tables &该命令将在后台作为一个任务启动服务器。
一旦守护进程在运行(禁用身份验证),打开一个新终端并运行:
mysql -u root -p上述命令应该允许您无需密码登录。
登录后,刷新权限并设置新密码为:
FLUSH PRIVILEGES;
ALTER USER 'root@localhost' IDENTIFIED BY 'password';关闭会话并重启MySQL。
现在用你的新密码登录到服务器。
结束
在本文中,我们讨论了解决这一问题的三种主要方法。
"mysql access denied for user 'root@localhost'" error.我们希望这个教程能帮助您解决这个错误。

