Heim  >  Fragen und Antworten  >  Hauptteil

Zugriff für Benutzer „root“@„localhost“ verweigert (mit Passwort: Ja) – Keine Berechtigung?

Ich bekomme immer wieder diesen Fehler.

Ich verwende mySQL Workbench und habe festgestellt, dass die Schemaberechtigungen von Root leer sind. Es gibt überhaupt keine Privilegien.

Ich habe Probleme auf verschiedenen Plattformen, auf denen ich meinen Server verwende, und dieses Problem taucht aus heiterem Himmel auf.

root@127.0.0.1 Anscheinend gibt es viele Zugriffe, aber ich bin so angemeldet, aber es ist nur localhost zugewiesen – localhost hat keine Berechtigungen.

Ich habe einige Dinge getan wie FLUSH HOSTSFLUSH PRIVILEGES usw. Aber kein Erfolg mit dieser Methode oder dem Internet.

Wie kann ich den Root-Zugriff wiederherstellen? Ich finde das frustrierend, denn wenn ich mich umsehe, erwarten die Leute, dass man „Zugriff hat“, aber ich habe keinen Zugriff, also kann ich nicht in die Befehlszeile oder so gehen und GRANT selbst etwas tun.

Laufen SHOW GRANTS FOR root Das bekomme ich als Gegenleistung:

Fehlercode: 1141. Für den Benutzer „root“ ist keine solche Berechtigung definiert. Host „%“


P粉136356287P粉136356287345 Tage vor1007

Antworte allen(2)Ich werde antworten

  • 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/

    Antwort
    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;

    Antwort
    0
  • StornierenAntwort