Come ripristinare o ripristinare la password dell'account amministratore per MySQL?


14

Ho un database MySQL che ho "ereditato" e non mi sono state fornite le credenziali di amministratore. Tuttavia, ho accesso alla casella su cui viene eseguita. C'è un modo per recuperare le credenziali dell'amministratore o crearne di nuove?

Risposte:


15

Leggi ed esegui il capitolo sulla reimpostazione della password di root nel Manuale di riferimento di MySQL.

Questa procedura avvia il demone mysql senza autorizzazione che consente di connettersi senza fornire credenziali. In questa modalità è possibile connettersi normalmente e reimpostare password e autorizzazioni. Successivamente, non dimenticare di riavviare mysql con l'autorizzazione appropriata in atto.


6

Se questo è un box Debian / Ubuntu, c'è un account speciale equivalente alla radice chiamato debian-sys-maint . Puoi leggere la password in /etc/mysql/debian.cnf

Usando quella password puoi accedere a mysql come debian-sys-maint usando:

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

Una volta effettuato l'accesso, procedi come segue:

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

root dovrebbe ora essere accessibile usando la tua nuova password:

mysql -uroot -p

3

Il mio utente root non esisteva. Su

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

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 priv 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 di più)

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


0

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

  1. Poiché non conosciamo la password corrente, il server MySQL deve eseguire saltando / bypassando le credenziali di accesso correnti. Indicare al server MySQL di saltare la tabella delle concessioni di accesso:
    • Arresta il tuo server MySQL (se è già in esecuzione).
    • Trova il file di configurazione di MySQL, my.cnf. (Per me è stato inserito @ /Applications/XAMPP/xamppfiles/etc. Puoi solo cercare se non riesci a trovarlo).
    • Apri il my.cnffile in qualsiasi editor di testo.
    • Aggiungi "skip-grant-tables"(senza virgolette) alla fine della [mysqld]sezione e salva il file.
    • Ora avvia il tuo server MySQL. Inizierà con l' skip-grant-tablesopzione.
  2. Apri Terminaled esegui il mysqlcomando
  3. Esegui comando mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Esegui comando mysql> FLUSH PRIVILEGES;
  5. Esegui comando mysql> exit
  6. Riavvia il server MySQL.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.