首页 > 社区问答列表 >User 'root'@'localhost' 拒绝访问 - 权限不足?

  User 'root'@'localhost' 拒绝访问 - 权限不足?

我持续收到这个错误。

我正在使用MySQL Workbench,从我的发现是root用户的权限似乎是空的。根本没有任何权限。

我正在遇到root用户在多个平台上的问题,而且这个问题已经持续了很长时间。

root@127.0.0.1似乎具有很多权限,但是当我作为root用户登录时,它只是将权限分配给本地计算机- 本地计算机没有权限。

我已经尝试了FLUSH HOSTS,FLUSH PRIVILEGES等方法,但是都没有成功。

我需要root用户的访问权限。我感到非常沮丧,因为当我在周围的人看起来期望我有访问权限时,我实际上没有访问权限,所以我不能进入命令行或做任何事情,并且无法授予自己任何权限。

当运行SHOW GRANTS FOR root时,我得到了以下返回:

Error Code: 1141. There is no such grant defined for user 'root' on host '%'


P粉826283529
P粉826283529

  • P粉864594965
  • P粉864594965     2023-08-08 13:46:16 2楼

    如果在 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/。

    +0 添加回复

  • P粉647504283
  • P粉647504283   已被采纳   2023-08-08 09:12:02 1楼

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


    INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
    GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

    +0 添加回复