Come reimpostare o recuperare la password dell'account amministratore per MySQL?

Ho un database MySQL che ho "ereditato" e non mi è stato dato le credenziali di amministratore. Tuttavia ho accesso alla casella in cui funziona. C'è un modo per ripristinare le credenziali di amministratore o creare nuove?

4 Solutions collect form web for “Come reimpostare o recuperare la password dell'account amministratore per MySQL?”

Leggere e eseguire il capitolo relativo alla reimpostazione della password di root nel manuale di riferimento di MySQL.

Questa procedura inizia il demone mysql senza authorization che consente di connettersi senza fornire credenziali. In questa modalità è ansible collegarsi normalmente e reimpostare le password e le sovvenzioni. In seguito non dimenticare di avviare nuovamente mysql con l'authorization corretta.

Se si tratta di una casella Debian / Ubuntu, esiste un account speciale equivalente root denominato debian-sys-maint . È ansible leggere la password in /etc/mysql/debian.cnf

Utilizzando questa password è ansible accedere a mysql come debian-sys-maint utilizzando:

mysql --defaults-file=/etc/mysql/debian.cnf mysql 

Una volta eseguito l'accesso, attenersi alla seguente procedura:

 update user set password=password('<new password>') where user='root'; flush privileges; quit; 

root deve ora essere accessibile usando la nuova password:

 mysql -uroot -p 

Il mio utente root non esisteva. Sopra

 CREATE USER root@localhost; 

ho ottenuto

 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 

La soluzione era quella di

 mysqld_safe --skip-grant-tables & mysql INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword'); UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root'; FLUSH PRIVILEGES; 

Dopo di che ho aggiunto tutti i privati ​​uno per uno con un piccolo aiuto da questo:

 mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N 

(e questo potrebbe e dovrebbe essere automatizzato più)

Nota: trovare il numero corretto di 'Y' INSERT è un PITA.

Poiché i passi sul manuale di riferimento di MySQL non sono molto chiari, sto cercando di rispondere qui in un linguaggio più semplice. (questa risposta è rilevante per gli utenti di MacBook OSX):

  1. Poiché non sappiamo la password corrente, il server MySQL deve eseguire l'ignorazione / ignorazione delle credenziali di login correnti. Indica il server MySQL per ignorare la tabella delle sovvenzioni di accesso per:
    • Fermi il tuo server MySQL (se è già in esecuzione).
    • Trova il tuo file di configuration MySQL, my.cnf . (Per me è stato inserito @ /Applications/XAMPP/xamppfiles/etc Puoi solo cercare se non riesci a trovare).
    • Apri il file my.cnf in qualsiasi editor di text.
    • Aggiungere "skip-grant-tables" (senza virgolette) alla fine della sezione [mysqld] e salvare il file.
    • Ora iniziate il tuo server MySQL. Comincerà con l'opzione skip-grant-tables .
  2. Aprire Terminal e eseguire il command mysql
  3. Esegui il command mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Esegui command mysql> FLUSH PRIVILEGES;
  5. Esegui il command mysql> exit
  6. Riavviare il server MySQL.
Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.