这种“access denied”错误是使用 MySQL 时最常见的错误之一。
在本文中了解如何修复它,并在建议的修复不起作用时查看一系列解决方案。
访问被拒绝错误
当您尝试连接到您自己计算机上的MySQL 数据库(称为“localhost”)时,您可能会收到以下错误:
Access denied for user 'root'@'localhost' (using password: YES)
你可能会在它前面看到一个错误代码:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
您可能还会收到“使用密码 no”的错误:
Access denied for user 'root'@'localhost' (using password: NO)
如果您使用命令行登录 MySQL,您将看到这一点:
mysql -u root -p
如果您使用诸如 MySQL Workbench 之类的 IDE 登录 MySQL,您也可能会看到这一点。或者即使您使用 phpMyAdmin。
这是什么意思?你怎么能解决它?
有一些解决方案,我在下面详细说明。尝试一种,如果不起作用,请尝试另一种。
还有一个登录提示:不要在命令行本身输入您的密码,因为这将存储在您的命令历史记录中。如上所述,使用 -p 选项,然后系统会提示您输入密码。
解决方案 1:Sudo 然后更改密码
如果您收到“拒绝访问”错误,解决它的一种方法是使用 sudo 登录 mysql 并更改 root 密码。
第 1 步:打开系统上的命令行。
步骤 2:使用 sudo 命令打开 mysql:
sudo mysql
第 3 步:输入此帐户的密码。
第 4 步:在一个命令中将 auth_plugin 更改为 mysql_native_password 和 root 帐户的密码:
ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'your_new_password';将单词 your_new_password 替换为您要用于 root 帐户的新安全密码。
mysql_native_password 方法是一种传统的身份验证方法,允许您登录。
第 5 步:刷新权限,它告诉服务器刷新授权表并应用您的更改,使用以下命令:
FLUSH PRIVILEGES;第 6 步:您可以通过从 mysql.user 表中进行选择来确认是否使用了新的身份验证方法或插件。
SELECT user, plugin
FROM mysql.user结果:
| user | plugin |
| root | mysql_native_password |
第 7 步:按 CTRL + D 或键入 exit 退出控制台。
exit;
第 8 步:使用 root 帐户和您设置的新密码登录 mysql,这应该可以工作:
mysql -u root -p
您现在应该登录到 mysql 中的 root 帐户。
解决方案 2:编辑 My.cnf 文件
如果上述解决方案不起作用,您可能需要编辑 mysql.cnf 文件以允许更改 root 帐户。
第 1 步:打开 my.cnf 文件。这可以存储在:
/etc/my.cnf
/etc/mysql/my.cnf
如果您不确定它在哪里,请在您的 MySQL 安装文件夹(例如在 Windows 或 Mac 上)搜索该文件。
如果您没有 my.cnf 文件(MacOS 默认不包含该文件)。如果您愿意,可以在 /etc 文件夹中创建一个。
第 2 步:在单词 [mysqld] 下添加单词 skip-grant-tables。您的文件可能如下所示:
[mysqld]
skip-grant-tables
第 3 步:重启 MySQL 服务器。
第 4 步:登录root账号:
mysql -u root -p
第 5 步:刷新权限,这会告诉服务器刷新授权表并应用您的更改,使用以下命令:
FLUSH PRIVILEGES;第 6 步:为帐户设置新密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';将单词 your_new_password 替换为您要用于 root 帐户的新安全密码。
第 7 步:打开您在步骤 1 中打开的 my.cnf 文件,删除关于 skip-grant-tables 的行,并保存文件。
第 8 步:再次重启 MySQL 服务器。
第 9 步:再次登录root账号:
mysql -u root -p
您现在应该能够使用新密码成功登录并且不会出现错误。
结论
这两个解决方案中的任何一个都有望为您解决问题,并且您不应再收到错误“用户'root'@'localhost'的访问被拒绝”。
原文标题:How to Fix MySQL Error: Access Denied for User ‘root’@’localhost’
原文作者:Ben Brumm
原文链接:https://www.databasestar.com/access-denied-for-user-root-at-localhost/




