Come impostare la password di root su null

Come posso cambiare la password per l’utente root di MySQL su null – ovvero senza password o '' – dal client della riga di comando MySQL?

È ansible recuperare la password del server database MySQL con i seguenti cinque semplici passaggi.

Passaggio 1 : interrompere il processo del server MySQL.

Passo 2 : Avviare il processo server / demone MySQL (mysqld) con l’opzione –skip-grant-tables in modo che non richieda la password.

Passo 3 : connettersi al server mysql come utente root.

Passo 4 : Configura la nuova password dell’account root mysql, ovvero resetta la password di mysql.

Passo 5 : Esci e riavvia il server MySQL.

Ecco i comandi che devi digitare per ogni passaggio (accedi come utente root):

Passo 1 : Arresta il servizio mysql

 # /etc/init.d/mysql stop 

Produzione:

 Stopping MySQL database server: mysqld. 

Passo 2 : avviare il server MySQL senza password:

 # mysqld_safe --skip-grant-tables & 

Produzione:

 [1] 5988 Starting mysqld daemon with databases from /var/lib/mysql mysqld_safe[6025]: started 

Passo 3 : Connetti al server mysql usando il client mysql:

 # mysql -u root 

Produzione:

 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> 

Passaggio 4 : Imposta la nuova password utente root di MySQL

 mysql> use mysql; mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; mysql> flush privileges; mysql> quit 

Passaggio 5 : Arresta il server MySQL:

 # /etc/init.d/mysql stop 

Produzione:

 Stopping MySQL database server: mysqld STOPPING server from pid file /var/run/mysqld/mysqld.pid mysqld_safe[6186]: ended [1]+ Done mysqld_safe --skip-grant-tables 

Passo 6 : Avvia il server MySQL e testalo

 # /etc/init.d/mysql start # mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root -p 

Fonte: http://www.cyberciti.biz/tips/recover-mysql-root-password.html

Ha funzionato per me e “5.7.11 MySQL Community Server”:

 use mysql; update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; 

Ho dovuto cambiare anche il campo ‘plugin’ perché era impostato su ‘auth_socket’.

Successivamente potrei connettermi come mysql -u root senza password.

Se si desidera una password vuota, è necessario impostare la password su null e non utilizzare la funzione di hash della password, in quanto tale:

Sulla riga di comando:

 sudo service mysql stop sudo mysqld_safe --skip-grant-tables --skip-networking & mysql -uroot 

In MySQL:

 use mysql; update user set password=null where User='root'; flush privileges; quit; 
  • connettersi a mysql come utente root (utilizzare uno dei due seguenti metodi)
    • accedi come root e avvia mysql usando mysql -p , inserisci la password di root corrente
    • accedi come auto e avvia mysql usando mysql -u root -p , inserisci la password di root corrente
  • mysql> set password = password('');

Fatto! Nessuna password di root.

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

Questo ha funzionato per me su Ubuntu 16.04 con v5.7.15 MySQL:

Innanzitutto, assicurati di avere installato mysql-client ( sudo apt-get install mysql-client ).

Apri terminale e accedi:

 mysql -uroot -p 

(quindi digita la tua password)

Dopo di che:

 use mysql; update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; 

(tnx @Stanislav Karakhanov)

E l’ultima cosa importante è ripristinare il servizio mysql :

 sudo service mysql restart 

Ora dovresti essere in grado di accedere (senza passsword) anche usando MySQL Workbench.

Non è una buona idea modificare direttamente il database mysql .

Preferisco i seguenti passaggi:

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; mysql> flush privileges; 

Solo per MySQL 8.0:

SET PASSWORD FOR 'root'@'localhost' = '';

La risposta di user64141

 use mysql; update user set password=null where User='root'; flush privileges; quit; 

non ha funzionato per me in MariaDB 10.1.5 (supposto essere un drop in sostituzione di MySQL). Anche se non è stato testato in MySQL 5.6 per vedere se è un cambiamento a monte, l’errore che ho ottenuto è stato:

ERRORE 1048 (23000): la colonna “Password” non può essere nulla

Sostituire il null con virgolette singole o doppie vuote ha funzionato bene.

 update user set password='' where User='root'; 

o

 update user set password="" where User='root'; 

Per me funziona.

ALTER USER ‘root’ @ ‘localhost’ IDENTIFICATO CON mysql_native_password BY ‘password’

Se conosci la tua password di root e desideri semplicemente ripristinarla, fai come segue:

  • Avvia il servizio MySQL dal pannello di controllo> Strumenti di amministrazione> Servizi. (solo se è stato fermato da te in precedenza! Altrimenti, salta questo passaggio)

  • Avvia MySQL Workbench

  • Digitare questo comando / riga SQL

    ALTER USER “root” @ “localhost” PASSWORD EXPIRE;

Per reimpostare qualsiasi altra password utente … basta digitare un altro nome utente invece di root.

Per connettersi a mysql senza password:

mysql -p SET PASSWORD = ""

https://dev.mysql.com/doc/refman/5.7/en/set-password.html

Sto usando nodejs e windows 10. Una combinazione di due risposte ha funzionato per me.

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; mysql> flush privileges; 

seguito da:

 restart; 

Spero che questo aiuti per gli altri che hanno ancora un problema con questo.

La syntax è leggermente diversa a seconda della versione. Dai documenti qui: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

MySQL 5.7.6 e versioni successive:

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

MySQL 5.7.5 e precedenti:

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

La mia variante per MySQL 5.7:

Arresta il servizio mysql:

 $ sudo service mysql stop 

Esecuzione in modalità provvisoria:

 $ sudo mysqld_safe --skip-grant-tables --skip-networking 

(la riga sopra è l’intero comando)

Apri una nuova finestra di terminale:

 $ mysql -u root $ mysql use mysql; $ mysql update user set authentication_string=password('password') where user='root'; $ mysql update user set plugin="mysql_native_password" where User='root'; $ mysql flush privileges; $ mysql quit; 

Esegui il servizio mysql:

 $ sudo service mysql start 

Volevo mettere i miei 2cents qui dentro bcuz le risposte di cui sopra non ha funzionato per me. Su Centos 7, mysql community v8, la shell è bash.

I comandi corretti sarebbero i seguenti:

 # start mysql without password checking systemctl stop mysqld 2>/dev/null systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" && systemctl start mysqld # set default password to nothing mysql -u root mysql <<- 'EOF' FLUSH PRIVILEGES; UNINSTALL COMPONENT 'file://component_validate_password'; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES; INSTALL COMPONENT 'file://component_validate_password'; EOF # restart mysql normally systemctl restart mysqld 

quindi puoi accedere senza password:

 mysql -u root