User 'root'@'localhost' 拒绝访问 - 权限不足?
P粉826283529
P粉826283529 2023-08-07 14:35:51
[PHP讨论组]
<p>我持续收到这个错误。<br /><br />我正在使用MySQL Workbench,从我的发现是root用户的权限似乎是空的。根本没有任何权限。<br /><br />我正在遇到root用户在多个平台上的问题,而且这个问题已经持续了很长时间。<br /><br />root@127.0.0.1似乎具有很多权限,但是当我作为root用户登录时,它只是将权限分配给本地计算机- 本地计算机没有权限。<br /><br />我已经尝试了FLUSH HOSTS,FLUSH PRIVILEGES等方法,但是都没有成功。<br /><br />我需要root用户的访问权限。我感到非常沮丧,因为当我在周围的人看起来期望我有访问权限时,我实际上没有访问权限,所以我不能进入命令行或做任何事情,并且无法授予自己任何权限。<br /><br />当运行SHOW GRANTS FOR root时,我得到了以下返回:</p><p><code></code></p> <blockquote> <p>Error Code: 1141. There is no such grant defined for user 'root' on host '%'</p> </blockquote><p><br /></p>
P粉826283529
P粉826283529

全部回复(2)
P粉864594965

如果在 MySQL 5.7.+ 中有这个问题:

Access denied for user 'root'@'localhost'

因为 MySQL 5.7 默认允许通过 socket 连接,这意味着您只需使用管理员权限连接到 MySQL。

SELECT user,authentication_string,plugin,host FROM mysql.user;

t然后就看到

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

允许使用管理员权限连接并输入密码,然后通过命令更新表中的值:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

然后再次运行select命令,你就会看到它已经更改了:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

然后这就是它。在完成sudo mysql_secure_installation命令之后,您可以运行以下过程。

对于mariadb,使用:


SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');

然后就是设置密码。更多可以看https://mariadb.com/kb/en/set-password/。

P粉647504283

使用 resetting 密码的说明 - 但不是重置密码,而是将一个记录强制插入到 mysql.user 表中


INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号