2012-07-25 5 views
32

ho avuto problema con mysql. Ho cercato di eseguire questo:accesso negato per l'utente debian-sys-maint

echo "show databases" | mysql -B -N 

Ma ho ottenuto:

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

Ma quando ho exec:

/etc/init.d/mysql restart 

ho ottenuto un 'OK'.

ho fatto

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

dove password è da /etc/mysql/debian.cnf. Ma non ha aiutato. (ovviamente ho scaricato priv e riavviato mysql).

risposta

15

Il problema è, la sua dichiarazione GRANT utilizza IDENTIFIED BY PASSWORD clausola, e in questo caso mysql si aspettano di ottenere un hashing la password, non un testo in chiaro.

Usa IDENTIFIED BY 'your password', invece, se si vuole fornire una password in chiaro.

87

Questo perché Debian ha un account MySQL debian-sys-maint utilizzato per la commutazione on/off e controllo dello stato. La password per tale utente deve essere la stessa memorizzata in /etc/mysql/debian.cnf. Il file è simile al seguente:

# 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 

Se la password non corrisponde (ad esempio perché si è modificato manualmente) lo script di init non funziona più. È necessario impostare la password in base al file. Così

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

devo campi [client] e [] mysql_upgrade in /etc/mysql/debian.cnf. Le password sono le stesse nel file e nel database per l'utente. –

+1

Sì, tutto ciò che serve: aggiornare la password, perché questo passaggio è unico per ogni installazione. Ad esempio: si sposta data_dir da un server a un altro, quindi il passaggio non corrisponde a –

3

La maggior parte modo semplice per ripristinare l'utente debian-sys-maint, è quello di riconfigurare il pacchetto mysql-server-5.5. Che se si conosce la password per l'utente root di MySQL, si può provare a ripristinare l'utente e la sua password nel /etc/mysql/debian.cnf.

sudo dpkg-reconfigure mysql-server-5.5 

NOTA: se non si può fermare mysql pid, basta eseguire sudo killall mysqld. Questo è necessario per riconfigurare il mysql-server-5.5.

+0

ciò non funziona. – specializt

+0

@specializt. Risolve il mio problema. Fai attenzione alla notazione di cui sopra. – shgnInc

+0

Perché dovrei essere "attento" a qualche "notazione"? Non ha alcun senso. – specializt