Das Hinzufügen eines Benutzers zu MySQL mit 'name' @ '%' schlägt mit ERROR 1396 fehl

9

Ich habe gerade versucht, einen neuen Benutzer mit MySQL hinzuzufügen

CREATE USER 'name'@'%' IDENTIFIED BY '...'

Es schlägt jedoch mit folgendem Fehler fehl:

ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'

Das Hinzufügen des Benutzers nur für localhost funktioniert einwandfrei:

CREATE USER 'name'@'localhost' IDENTIFIED BY '...'

Ich habe keine Ahnung, was das Problem sein könnte. Für Ideen wäre ich dankbar.

(Ich benutze mysql Ver 14.14 Distrib 5.1.66.)

Petr Pudlák
quelle
Ich sah mich dem ähnlichen Problem gegenüber, während ich den Benutzer CREATE / DROP, alle Grant-Tabellen auf Benutzerinformationen überprüfte, keine Benutzerinformationen fand, versuchte, den gesamten Zugriff zu widerrufen, und den Benutzer löschte, nachdem der Vorgang nach einiger Zeit funktioniert hatte, ohne dies zu tun Änderungen, schrieb ich meine detaillierte Antwort hier rathishkumar.in/2018/10/…
Rathish

Antworten:

13

Laut den Dokumenten interpretiert MySQL es, wenn Sie den @ 'Hostnamen' (das heißt CREATE USER 'Name') nicht verwenden, als hätte er ein @ '%'. Die von Ihnen angegebene Fehlermeldung weist darauf hin, dass das System bereits einen Benutzernamen '@'% 'enthält:

mysql> CREATE USER 'name'@'%' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.04 sec)

mysql> CREATE USER 'name'@'%' IDENTIFIED BY 'test';
ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'
mysql> CREATE USER 'name' IDENTIFIED BY 'test';
ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'

Wenn Sie den Benutzer löschen und trotzdem die Nachricht erhalten, versuchen Sie, FLUSH PRIVILEGES auszuführen.

Weitere Informationen finden Sie auch in dieser SO-Frage .

Redguy
quelle
1

Bei der Verwendung des Docker-Images mysql: 5.7 trat der gleiche Fehler auf. Der Hauptfehler bestand darin, einen rootBenutzer zu erstellen, der standardmäßig vorhanden ist. Weitere Informationen: https://github.com/docker-library/mysql/issues/129

Wie im obigen Link angegeben, bestand die Lösung darin , beim Starten des Docker-Images NICHT MYSQL_USERund MYSQL_PASSWORDin den Umgebungsvariablen zu setzen .

rahuljain1311
quelle
Das hat mir sehr geholfen! Ich wusste nicht, warum ich im Docker keine Verbindung zur Datenbank herstellen konnte, und ahnte nie, dass dies der Grund war.
Dingo_d