Come scoprire la password di root di MySQL


167

Non riesco a capire la mia password di root di MySQL; come posso scoprirlo? Esiste un file in cui è memorizzata questa password?

Sto seguendo questo link ma non ho directory directadmin in locale.


Trovato da una semplice ricerca su Google: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran,

11
la password di root predefinita è - aspetta - "root" (senza virgolette) o nessuna password (ed è quel server mysql davvero tuo)
Nikola Bogdanović,

sì, è il mio server mysql locale sul mio laptop
Om3ga,

così qualcuno ha appena superato questa domanda e ha scaricato un downvote su ogni risposta corretta e pertinente ?
lanzz,

Risposte:


142

grazie a @thusharaK ho potuto resettare la password di root senza conoscere la vecchia password.

Su Ubuntu ho fatto quanto segue:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Quindi esegui mysql in un nuovo terminale:

mysql -u root

Ed esegui le seguenti query per modificare la password:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

In MySQL 5.7, il campo password nel campo tabella mysql.user è stato rimosso, ora il nome del campo è 'authentication_string'.

Esci dalla modalità provvisoria mysql e avvia il servizio mysql:

mysqladmin shutdown
sudo service mysql start

24
Ho dovuto usare mysqladmin -u root -p shutdown, con la nuova password.
SL Barth - Ripristina Monica il

2
Particolare flusso di istruzioni in particolare: quindi esegui mysql in un nuovo terminale
Mohammed Subhi Sheikh Quroush,

8
non posso farlo mysql -u root. Mostra erroreAccess denied
Avinash Raj,

4
@AvinashRaj: Prova questo: sudo mysql -u root
Allen Gingrich

Eccezionale. Sto capendo cosa ha funzionato in RHEL 7: Terminal 1: servizio sudo mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u root AGGIORNAMENTO mysql.user SET Password = PASSWORD ('nuova password') WHERE User = 'root'; FLUSH PRIVILEGES; mysqladmin -u root -p shutdown Nota: una volta arrestato mysqladmin, vedrai la modalità di sicurezza uscire dal Terminale 1. sudo service mysql start Ecco fatto e funziona come un incantesimo con la nuova password!
StackOverFlow Utente

65

Non è possibile visualizzare la password con hash; l'unica cosa che puoi fare è resettarlo!

Ferma MySQL:

sudo service mysql stop

o

$ sudo /usr/local/mysql/support-files/mysql.server stop

Avviarlo in modalità provvisoria:

$ sudo mysqld_safe --skip-grant-tables

(sopra la riga è l'intero comando)

Questo sarà un comando in corso fino al termine del processo, quindi apri un'altra finestra shell / terminale, accedi senza una password:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 5.7 e versioni successive:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Avvia MySQL:

sudo mysql start

o

sudo /usr/local/mysql/support-files/mysql.server start

La tua nuova password è "password".


sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: comando non trovato
Isuru

Cosa fare in questo caso?
Isuru,

Sembra che mysql non sia installato correttamente. Disinstallalo correttamente e reinstallalo.
tk_

Grazie mille. Qualcosa è andato storto con il mio mysql_secure_installatione root non ha più collaborato. Cosa fa l' authentication_stringimpostazione?
sarà

3
Per riavviare, prova mysqladmin -u root -p shutdowncon la nuova password quindisudo service mysql start
forumulator

37

MySQL 5.7 e versioni successive salva la radice nel file di registro MySQL.

Per favore prova questo:

sudo grep 'temporary password' /var/log/mysqld.log

Nel mio caso la password non era qui; tuttavia, invece, /var/log/mysql/error.logconteneva un avvertimento che la password di root era vuota - quindi questo tipo di mi ha salvato la giornata :)
Janaka Bandara,

19

una cosa che mi ha fatto scattare su una nuova installazione di mySQL e mi chiedo perché non sono riuscito a far funzionare la password predefinita e perché anche i metodi di ripristino non funzionavano. si scopre bene che su Ubuntu 18 la versione più recente del server mysql non utilizza affatto l'autenticazione della password per l'utente root. Quindi questo significa che non importa cosa lo hai impostato, non ti permetterà di usarlo. si aspetta che tu acceda da un socket privilegiato. così

mysql -u root -p

non funzionerà affatto, anche se stai usando la password corretta !!! negherà l'accesso, qualunque cosa tu abbia inserito.

Invece devi usare

sudo mysql

che funzionerà senza alcuna password. poi una volta dentro devi digitare

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

quindi disconnettiti e ora la cosa insanguinata accetterà finalmente la tua password



14

Seguire questi passaggi per reimpostare la password nel sistema Windows

  1. Arresta il servizio Mysql dal task manager

  2. Crea un file di testo e incolla la seguente istruzione

MySQL 5.7.5 e precedenti:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 e versioni successive:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. Salva come mysql-init.txte inseriscilo 'C' drive.

  2. Apri il prompt dei comandi e incolla quanto segue

C:\> mysqld --init-file=C:\\mysql-init.txt


2
Questo è stato un salvavita, GRANDE consiglio!
Nicholas Kreidberg,

ha lavorato in Centos7 mysqld --init-file=/root/m.txt. Ho aggiunto il comando sopra SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');a /root/m.txt
Damodar Bashyal il

8

A meno che il gestore pacchetti non richieda di digitare la password di root durante l'installazione, la password di root predefinita è la stringa vuota. Per connettersi al server appena installato, digitare:

shell> mysql -u root --password=
mysql>

Per modificare la password, tornare alla shell unix e digitare:

shell> mysqladmin -u root --password= password root

La nuova password è 'root'. Ora connettiti al server:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Spiacenti, la password è stata modificata. Utilizzare il nuovo, root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Nuovo fai qualcosa di interessante

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
non utilizza password ma socket autenticati per impostazione predefinita ora. quindi cambiare la password non è più sufficiente.
Kit Ramos

7

Oltre alle altre risposte, in un'installazione cpanel, la password di root di mysql è memorizzata in un file chiamato /root/.my.cnf. (e il servizio cpanel lo reimposta al cambio, quindi le altre risposte qui non aiuteranno)


6

puoi vedere la password di root di mysql, beh, l'ho provata su mysql 5.5, quindi non so se altre nuove versioni funzionano bene o no

nano ~/.my.cnf

4

Questo ha funzionato per me:

Sul terminale digitare quanto segue

$ sudo mysql -u root -p

Immettere la password: // basta premere invio

mysql>


sembra che il server mysql non stia più usando la password auth per impostazione predefinita. devi avviare il client mysql come superutente (sudo) per ottenere l'accesso fino a quando non cambi il metodo di accesso.
Kit Ramos

4

La password predefinita che ha funzionato per me dopo l'installazione immediata del server mysql è: mysql


2
forse non ha risposto alla domanda, ma molte persone che vengono qui possono trovare che risolva il loro problema.
Ohad Cohen,

3

La procedura cambia a seconda della versione di MySql. Seguire la procedura esattamente come descritto per la propria versione:

  • SUGGERIMENTI - Leggi prima della pagina delle istruzioni per la tua versione di MySql *

  • Nel passaggio 5: anziché eseguire CMD, creare un collegamento sul desktop che chiama CDM.exe. Quindi fare clic con il tasto destro del mouse sul collegamento e selezionare "Esegui come amministratore".

  • Al passaggio 6: salta la prima versione proposta del comando ed esegui la seconda, quella con il parametro --defaults-file

  • Una volta eseguito il comando, se tutto è a posto, la finestra CMD rimane aperta e il comando del passaggio 6 continua l'esecuzione. Basta chiudere la finestra (fare clic su 'x'), quindi forzare la chiusura di MySQl da Task Manager.

  • Elimina il file con i comandi SQL e riavvia MySQL. La password deve essere cambiata ora.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... basta cambiare la versione nel link (5.5, 5.6, 5.7)


3

Nel tuo file .err "hostname" all'interno della cartella di dati su cui funziona MySQL, prova a cercare una stringa che inizi con:

"Viene generata una password temporanea per roor @ localhost"

Puoi usare

less /mysql/data/dir/hostname.err 

quindi il comando barra seguito dalla stringa che si desidera cercare

/"A temporary password"

Quindi premere n, per passare al risultato successivo.



0

Sistema:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Procedura:

  1. Apri due sessioni shell, accedendo a una come utente root Linux e all'altra come utente non root con accesso al mysqlcomando.

  2. Nella tua sessione di root, ferma il normale listener mysqld e avvia un listener che ignora l'autenticazione della password ( nota: questo è un rischio significativo per la sicurezza in quanto chiunque abbia accesso al mysql comando può accedere ai tuoi database senza password. Puoi chiudere sessioni di shell attive e / o disabilitare l'accesso alla shell prima di farlo):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Nella sessione non root, accedi a mysql e imposta la password di root di mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Nella sessione root, uccidi l'istanza senza password di mysqld e ripristina il normale listener mysqld al servizio:

    # kill %1
    # systemctl start mysqld

  5. Nella sessione non root, prova la nuova password di root che hai configurato sopra:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Ho risolto questo in un modo diverso, questo potrebbe essere più facile per alcuni.

L'ho fatto in questo modo perché ho provato ad avviarlo in modalità provvisoria ma non riesco a connettermi con l'errore: ERRORE 2002 (HY000): Impossibile connettersi al server MySQL locale tramite socket '/var/run/mysqld/mysqld.sock' (2)

Quello che ho fatto è stato connettermi normalmente come root:

$ sudo mysql -u root

Quindi ho creato un nuovo superutente:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Quindi accedi come myuser

$ mysql -u myuser -p -h localhost

Cercare di cambiare la password non mi ha dato errori ma non ho fatto nulla per me, quindi ho lasciato cadere e ricreato l'utente root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

L'utente root ora sta lavorando con la nuova password


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.