首页  >  问答  >  正文

用户'root'@'localhost'的访问被拒绝(使用密码:是)- 没有权限?

我不断收到此错误。

我正在使用 mySQL Workbench,我发现 root 的架构权限为空。根本没有任何特权。

我在使用我的服务器的各个平台上遇到了问题,而且这是一个突然出现的问题。

root@127.0.0.1 显然有很多访问权限,但我是这样登录的,但它只是分配给本地主机 - 本地主机没有权限。

我做了一些事情,比如 FLUSH HOSTSFLUSH PRIVILEGES 等 但没有从该方法或互联网上取得成功。

如何才能恢复 root 访问权限?我觉得这很令人沮丧,因为当我环顾四周时,人们希望您“有权访问”,但我没有访问权限,所以我无法进入命令行或任何东西,并且 GRANT 自己做任何事情。

运行 SHOW GRANTS FOR root 这是我得到的回报:

错误代码:1141。没有为用户“root”定义此类授权 主机“%”


P粉136356287P粉136356287344 天前1003

全部回复(2)我来回复

  • P粉343141633

    P粉3431416332023-10-10 14:58:33

    如果您在 MySql 5.7.+ 中遇到同样的问题:

    Access denied for user 'root'@'localhost'

    这是因为MySql 5.7默认允许使用socket连接,这意味着你只需使用sudo mysql连接即可。如果你运行sql:

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

    然后你就会看到它:

    +------------------+-------------------------------------------+-----------------------+-----------+
    | 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)

    要允许使用 root 和密码进行连接,请使用命令更新表中的值:

    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粉807471604

    P粉8074716042023-10-10 10:50:19

    使用重置root密码的说明 - 但我们不会重置 root 密码,而是将强制将一条记录插入 mysql.user 表

    在初始化文件中,使用它来代替

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

    回复
    0
  • 取消回复