Fehlercode: 1133. Es kann keine passende Zeile in der Benutzertabelle gefunden werden

7

Ich lese O'Relly "Learning MySQL" und es heißt, dass Sie einen Benutzer in MySQL erstellen können, indem Sie genau dies tun:

mysql> GRANT ALL ON *.* TO 'jill'@'%.invyhome.com' IDENTIFIED BY 'the_password';
Query OK, 0 rows affected (0.01 sec)

Aber wenn ich es versuche:

-> grant select on testgrounds.personas to ''@'localhost';
--> Error Code: 1133. Can't find any matching row in the user table

Aber es gelingt, wenn ich ein Passwort benutze:

->grant select on testgrounds.personas to ''@'localhost' identified by 'pass';
--> 0 row(s) affected

Ich musste die Berechtigungen für den Benutzer root wiederherstellen, weil ich experimentiert und sie durcheinander gebracht habe, also denke ich, bevor ich das tue, könnte ich die Anweisung im Buch tatsächlich verwenden (ich erinnere mich nicht an 100%)

-> select current_user;
--> 'root@localhost'

-> show grants;
--> 'GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' IDENTIFIED BY PASSWORD \'*4ACFE3202A5FF5CF467898FC58AAB1D615029441\' WITH GRANT OPTION'
--> 'GRANT ALL PRIVILEGES ON `testgrounds`.* TO \'root\'@\'localhost\' WITH GRANT OPTION'
--> 'GRANT PROXY ON \'\'@\'\' TO \'root\'@\'localhost\' WITH GRANT OPTION'

Stimmt etwas mit meiner MySQL-Installation oder Einrichtung nicht?

Jh62
quelle

Antworten:

2

Dies ist kein Problem bei der Installation oder Einrichtung von MySQL.

Jeder Kontoname besteht sowohl aus einem Benutzer- als auch einem Hostnamen wie 'Benutzername' @ 'Hostname', auch wenn der Hostname nicht angegeben ist. Aus dem MySQL-Referenzhandbuch:

MySQL-Kontonamen bestehen aus einem Benutzernamen und einem Hostnamen. Auf diese Weise können Konten für Benutzer mit demselben Namen erstellt werden, die von verschiedenen Hosts aus eine Verbindung herstellen können.

Auf diese Weise kann MySQL auch unterschiedliche Berechtigungsstufen erteilen, je nachdem, auf welchem ​​Host die Verbindung hergestellt wird.

Beim Aktualisieren von Zuschüssen für ein Konto, bei dem MySQL den Host-Teil nicht erkennt, wird ein Fehlercode 1133 zurückgegeben, es sei denn, es verfügt über ein Kennwort zur Identifizierung dieses Kontos.

Außerdem erlaubt MySQL, dass ein Kontoname nur durch seinen Benutzernamen angegeben wird. In diesem Fall wird er jedoch als 'Benutzername' @ '%' behandelt.

cjtcook
quelle