2012-07-25 17 views
32

Miałem problem z mysql. Starałem się wykonać to:odmowa dostępu dla użytkownika debian-sys-maint

echo "show databases" | mysql -B -N 

Ale mam:

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

Ale kiedy exec:

/etc/init.d/mysql restart 

Dostałem 'OK'.

zrobiłem

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

gdzie hasło jest od /etc/mysql/debian.cnf. Ale to nie pomogło. (oczywiście przepłukałem priv i zrestartowałem mysql).

Odpowiedz

15

Problem polega na tym, swoje oświadczenie GRANT wykorzystuje IDENTIFIED BY PASSWORD klauzulę, aw tym przypadku MySQL oczekiwać, aby uzyskać hashed hasło, a nie zwykłego tekstu jednego.

Zamiast tego należy użyć IDENTIFIED BY 'your password', jeśli chcesz podać hasło w postaci zwykłego tekstu.

87

To dlatego, że Debian ma konto MySQL debian-sys-maint używane do włączania/wyłączania i sprawdzania stanu. Hasło dla tego użytkownika powinno być takie samo jak zapisane w /etc/mysql/debian.cnf. Plik wygląda następująco:

# 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 

Jeśli hasło nie pasuje (na przykład dlatego, że zmienił go ręcznie) skrypt startowy nie będzie już działać. Powinieneś ustawić hasło zgodnie z plikiem. Więc

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

Mam pola [klient] i [mysql_upgrade] w /etc/mysql/debian.cnf. Hasła są takie same w pliku iw bazie danych dla użytkownika. –

+1

Tak, wszystko, czego potrzebujesz - zaktualizuj hasło, ponieważ to hasło jest unikalne dla każdej instalacji. Na przykład: przenosisz data_dir z jednego serwera na drugi, więc hasło nie pasuje do –

3

Najprostszym sposobem na przywrócenie użytkownika debian-sys-maint jest rekonfiguracja pakietu mysql-server-5.5. Jeśli znasz hasło użytkownika root MySQL, możesz spróbować przywrócić użytkownika i jego hasło w /etc/mysql/debian.cnf.

sudo dpkg-reconfigure mysql-server-5.5 

UWAGA: jeśli nie można zatrzymać mysql PID, wystarczy uruchomić sudo killall mysqld. Jest to potrzebne do rekonfiguracji serwera mysql-5.5.

+0

to nie działa. – specializt

+0

@specializt. To rozwiązuje mój problem. Uważaj na powyższy zapis. – shgnInc

+0

Dlaczego powinienem uważać na "notację"? To nie ma żadnego sensu. – specializt

Powiązane problemy