2 Stimmen

MySQL Grant Problem

Warum könnte die folgende Zuschussanweisung nicht funktionieren?

grant all on kylie.* to 'kylie'@'localhost' identified by 'foo';

Hier ist die vollständige Ausgabe.

$ mysql -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 63
Server version: 5.1.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases like 'kylie%';
+-------------------+
| Database (kylie%) |
+-------------------+
| kylie             | 
+-------------------+
1 row in set (0.00 sec)

mysql> grant all on kylie.* to 'kylie'@'localhost' identified by 'foo';
Query OK, 0 rows affected (0.02 sec)

mysql> exit
Bye

$ mysql -u kylie 
ERROR 1045 (28000): Access denied for user 'kylie'@'localhost' (using password: YES)

Es scheint so, als ob mich diese Zuschussoptionen jedes Mal erwischen. Ich glaube, ich habe sie auswendig gelernt, und die Dokumente scheinen auch zu stimmen, aber sie funktionieren oft nicht. Was übersehe ich?

0 Stimmen

Ich nehme an, Sie haben eine Zeile zwischen den letzten beiden Zeilen ausgelassen (die, in der nach dem Passwort "foo" gefragt wird)?

0 Stimmen

Nein, das ist das Problem. MySQL fragt nicht nach dem Passwort und gibt einfach eine Fehlermeldung "Zugriff verweigert" aus.

0 Stimmen

Haben Sie eine ~/.my.cnf-Datei, aus der der Client möglicherweise ein (falsches) Passwort liest?

1voto

Senseful Punkte 79049

Versuchen Sie etwas wie:

mysql -ukylie -pfoo kylie

Das letzte kylie sollte festlegen, dass kylie als Standarddatenbank verwendet wird (d. h. die Datenbank, für die Sie eine Berechtigung haben). Es ist vielleicht nicht erforderlich, aber ich frage mich, ob es bei Ihnen funktioniert oder nicht.

Aktualisiert dank der Kommentare.

0 Stimmen

Dadurch erhalte ich eine MySQL-Ausgabe, die die Verwendung anzeigt, als ob der Befehl einfach falsch wäre. Ich habe auch das Folgende versucht. "mysql -ukylie -pfoo" Das hat funktioniert! Ich frage mich warum.

0 Stimmen

Wenn Sie die Option -p gefolgt von einem Leerzeichen verwenden, werden Sie von mysql aufgefordert, Ihr Passwort einzugeben. Als Name der Datenbank, zu der eine Verbindung hergestellt werden soll, wird foo angenommen. Da es keine Datenbank namens foo gibt, gibt es einen Fehler aus. Wenn Sie das Leerzeichen weglassen, interpretiert mysql foo als Ihr Passwort und kylie als Ihre Datenbank, was korrekt ist. Wenn Sie das Kennwort in den Befehl aufnehmen, erscheint es in Ihren History-Dateien usw. Es ist sicherer, die Option -p ohne das Kennwort zu verwenden: mysql -p -u kylie kylie In diesem Fall werden Sie nach Ihrem Kennwort gefragt, das nicht in den Verlaufsdateien usw. auftauchen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X