暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

故障处理| 如何修复 MySQL 报错:Access denied for user 'root'@'localhost'

原创 小小亮 2022-10-13
3228

这种“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

结果:


userplugin
rootmysql_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/


最后修改时间:2022-10-13 15:39:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论