搜尋

首頁  >  問答  >  主體

使用者'root'@'localhost'的存取被拒絕(使用密碼:是)- 沒有權限?

我不斷收到此錯誤。

我正在使用 mySQL Workbench,我發現 root 的架構權限為空。根本沒有任何特權。

我在使用我的伺服器的各個平台上遇到了問題,而且這是一個突然出現的問題。

root@127.0.0.1 顯然有很多訪問權限,但我是這樣登入的,但它只是分配給本地主機 - 本地主機沒有權限。

我做了一些事情,像是 FLUSH HOSTSFLUSH PRIVILEGES 等 但沒有從該方法或互聯網上取得成功。

如何才能恢復 root 存取權?我覺得這很令人沮喪,因為當我環顧四周時,人們希望您“有權訪問”,但我沒有訪問權限,所以我無法進入命令行或任何東西,並且GRANT 自己做任何事情。

運行 SHOW GRANTS FOR root 這是我得到的回報:

錯誤代碼:1141。沒有為使用者“root”定義此類授權 主機“%”


P粉136356287P粉136356287415 天前1127

全部回覆(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
  • 取消回覆