webentwicklung-frage-antwort-db.com.de

FEHLER 1044 (42000): Zugriff für "root" mit allen Berechtigungen verweigert

Ich habe einen seltsamen Fehler. Ich bin im lokalen MySQL als root über die Befehlszeile angemeldet. Nach dem Anlegen der Datenbank:

create database some_db;

Geben Sie dann einem Benutzer Berechtigungen:

grant all privileges on some_db.* to [email protected]'localhost' identified by 'password';

Dies gibt Fehler:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'

Die Berechtigungen für den Root (show grants;) zeigen:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA' 

Ich stelle auch sicher, dass ich als root angemeldet bin:

select current_user();

Und dies bestätigt, dass ich als "root" @ "localhost" angemeldet bin

Ich habe mehrmals eine Datenbank erstellt und einen Benutzer zugewiesen und hatte nie ein Problem. Warum kann ich der von root erstellten Datenbank keinen Benutzer zuweisen, während ich als root angemeldet bin?

p.s. Aus anderen Posts gehe ich davon aus, dass das Problem möglicherweise durch einige fremde Benutzer verursacht wurde

select Host, user from mysql.user;

Einige Benutzer, die ich nicht hinzugefügt habe, aber auftauchen:

 MY_COMPuTER_name.local |       ''
 MY_COMPuTER_name.local |     root

Ich habe versucht, diese Benutzer zu löschen

drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';

Während die Abfrage erfolgreich ausgeführt wird, werden die Benutzer jedoch auch nach dem Löschen der Berechtigungen nicht gelöscht. Warum kann ich Benutzer nicht löschen? Jede Hilfe ist sehr zuvorkommend

21
latvian

Identifizieren Sie zunächst den Benutzer, als den Sie angemeldet sind:

 select user();
 select current_user();

Als Ergebnis für den ersten Befehl haben Sie versucht, sich anzumelden, für den zweiten haben Sie tatsächlich eine Verbindung hergestellt. Bestätige, dass du angemeldet bist als [email protected] in MySQL.

Grant_priv bis [email protected]. Hier ist, wie Sie überprüfen können.

mysql> SELECT Host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| Host      | user             | password                                  | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root             | ***************************************** | N          | Y          |
| localhost | debian-sys-maint | ***************************************** | Y          | Y          |
| localhost | staging          | ***************************************** | N          | N          |
+-----------+------------------+-------------------------------------------+------------+------------+

Sie können sehen, dass Grant_priv für root @ localhost auf N gesetzt ist. Dies muss Y sein. Im Folgenden wird beschrieben, wie dies behoben wird:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

Ich habe mich wieder eingeloggt, es war in Ordnung.

Wenn beim Versuch, SQL-Befehle in MySQL (das auf dem XAMPP-Server installiert wurde) "cmd Prompt" auszuführen, die Fehlermeldung 1044 (42000) angezeigt wird, ist dies die Lösung:

  1. Schließen Sie Ihre MySQL-Eingabeaufforderung.

  2. Öffnen Sie Ihre Cmd-Eingabeaufforderung (über Startmenü -> Ausführen -> Cmd). Daraufhin wird Folgendes angezeigt: C:\Users\User> _

  3. Gehen Sie zu MySQL.exe, indem Sie die folgenden Befehle eingeben:

C:\Users\User>cd\ C:\>cd xampp C:\xampp>cd mysql C:\xxampp\mysql>cd bin C:\xampp\mysql\bin>mysql -u root

  1. Versuchen Sie nun, eine neue Datenbank zu erstellen, indem Sie Folgendes eingeben:

    mysql> create database employee;
    

    wenn es zeigt:

    Query OK, 1 row affected (0.00 sec)
    mysql>
    

    Dann herzlichen Glückwunsch! Du bist startklar...

2
Ashwin

Der Grund, warum ich einige Benutzer nicht über die Anweisung 'drop' löschen konnte, war, dass es einen Fehler in Mysql http://bugs.mysql.com/bug.php?id=62255 gibt, der den Hostnamen enthält Großbuchstaben. Die Lösung lief folgende Abfrage:

DELETE FROM mysql.user where Host='Some_Host_With_UpperCase_Letters';

Ich versuche immer noch, das andere Problem herauszufinden, bei dem der Root-Benutzer mit allen Berechtigungen neuen Benutzern für eine bestimmte Datenbank keine Berechtigungen erteilen kann

1
latvian