2012-07-25 14 views
32

Ich hatte ein Problem mit MySQL. Ich habe versucht, dies auszuführen:Zugang verweigert für Benutzer debian-sys-maint

echo "show databases" | mysql -B -N 

Aber ich habe:

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) 

Aber wenn ich exec:

/etc/init.d/mysql restart 

Ich habe eine 'OK'.

Ich habe

GRANT ALL PRIVILEGES on *.* TO [email protected] IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES; 

wo Passwort von /etc/mysql/debian.cnf ist. Aber es hat nicht geholfen. (natürlich habe ich priv gelöscht und mysql neu gestartet).

Antwort

15

Das Problem ist, Ihre GRANT Anweisung verwendet IDENTIFIED BY PASSWORD Klausel, und in diesem Fall mysql erwartet ein gehasht Passwort zu erhalten, keinen Klartext ein.

Verwenden Sie stattdessen IDENTIFIED BY 'your password', wenn Sie ein Klartextkennwort eingeben möchten.

87

Das liegt daran, dass Debian ein MySQL-Konto debian-sys-maint zum Ein-/Ausschalten und Überprüfen des Status verwendet hat. Das Passwort für diesen Benutzer sollte mit dem in /etc/mysql/debian.cnf gespeicherten übereinstimmen. Die Datei sieht wie folgt aus:

# Automatically generated for Debian scripts. DO NOT TOUCH! 
[client] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
[mysql_upgrade] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
basedir = /usr 

Wenn das Passwort nicht (zum Beispiel, weil Sie es manuell geändert) passt das Init-Skript nicht mehr funktioniert. Sie sollten das Passwort entsprechend der Datei einstellen. So

mysql -u root -p 
# Then type MySQL root password 
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>'; 
+0

Ich habe die Felder [client] und [mysql_upgrade] in /etc/mysql/debian.cnf. Passwörter sind in der Datei und in der Datenbank für Benutzer identisch. –

+1

Ja, alles was Sie brauchen - Passwort aktualisieren, da dieser Pass für jede Installation eindeutig ist. Zum Beispiel: Sie verschieben data_dir von einem Server zu einem anderen, so dass der Pass nicht –

3

Der einfachste Weg zum Wiederherstellen des debian-sys-maint-Benutzers besteht in der Neukonfiguration des Pakets mysql-server-5.5. Wenn Sie das Passwort für den Root-Benutzer von MySQL kennen, können Sie versuchen, den Benutzer und sein Passwort in /etc/mysql/debian.cnf wiederherzustellen.

sudo dpkg-reconfigure mysql-server-5.5 

HINWEIS: Wenn Sie nicht mysql pid stoppen kann, nur sudo killall mysqld laufen. Dies wird benötigt, um den mysql-server-5.5 neu zu konfigurieren.

+0

dies funktioniert nicht funktioniert. – specializt

+0

@specializt. Es löst mein Problem. Sei vorsichtig mit der obigen Notation. – shgnInc

+0

Warum sollte ich bei einigen "Notationen" vorsichtig sein? Das macht keinen Sinn. – specializt

Verwandte Themen