Modifica della password di root MySQL


95

Ho provato a reimpostare la mia password di root MySQL. Ho eseguito mysqld_safe --skip-grant-tables, aggiornato la password di root e controllato la tabella utente per assicurarmi che sia presente. Una volta riavviato il demone mysql, ho provato ad accedere con la nuova password di root che ho appena impostato e ho ancora accesso negato per errori di "root" dell'utente. Ho anche provato a rimuovere e reinstallare completamente mysql (inclusa la rimozione del file my.cnf) e ancora senza fortuna. Qualcuno ha qualche suggerimento su cosa posso fare dopo?

Grazie in anticipo


2
per favore pubblica il tuo errore reale
Vishwanath Dalvi

16
Se non sei bloccato SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); è più sicuro.
sabgenton

Ho seguito i passaggi nel video per cambiare la password in uno dei miei server youtu.be/gFo5DV_pSg8
Prem


1
Versione server: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERRORE 1064 (42000): Hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a 'PASSWORD ("1")' alla riga 1 SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ("somepassword");
discipleartem il

Risposte:


124

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


7
Questo funziona per me in 5.7 mentre la risposta accettata non lo è.
Stoopkid

2
Questa è la soluzione corretta se la password di root MySQL è vuota.
fschuindt

3
> AGGIORNA mysql.user SET authentication_string = PASSWORD ('MyNewPass') WHERE user = 'root'; > FLUSH PRIVILEGI; In MySQL versione 5.7.x non c'è più il campo della password nella tabella mysql. È stato sostituito con authentication_string.
Robert Anthony S. Tribiana

2
Questo mi dà un OK, ma in realtà non fare nulla
Freedo

1
È necessario un comando aggiuntivo FLUSH PRIVILEGESper rendere effettiva la modifica senza riavviare il server del database.
NetVicious

60

dai un'occhiata a questo dal manuale di riferimento di MySQL:

Primo login mysql:

# mysql -u root -p

Quindi al prompt di mysql esegui:

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

Poi

FLUSH PRIVILEGES;

Guarda questa pagina per maggiori informazioni: Reimpostazione della password di root: sistemi Unix


Ho ricevuto un errore "Stai utilizzando la modalità di aggiornamento sicuro e hai tentato di aggiornare una tabella senza un WHERE che utilizza una colonna KEY ..." durante l'aggiornamento della password dell'utente. Vedi stackoverflow.com/questions/11448068/… per come aggirare questo errore.
Joe Borysko

ERRORE 1064 (42000): hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '(' MyNewPass ') WHERE User =' root '' alla riga 1
discipleartem


27

Questa è la risposta aggiornata per WAMP v3.0.6 e versioni successive

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

In MySQL versione 5.7.x non c'è più il campo della password nella tabella mysql. È stato sostituito con authentication_string. (Questo è per il terminale / CLI)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(Questo se per PHPMyAdmin o qualsiasi GUI Mysql)


Questa risposta è una delle poche che afferma che la mysql.usertabella dovrebbe essere aggiornata. Notare che se si utilizza un qualsiasi altro database (impostato dal usecomando), verrà visualizzato un errore indicante che la tabella usernon esiste. Grazie Signore!
Aleksandar

1
per me va bene . Sto usando 5.7.x, non c'è mysql.usertabella. altre risposte sono
obsolete

Felice di aiutare!!
Robert Anthony S. Tribiana

Lo ripristino perché è mia intenzione utilizzare> a causa del punto e virgola per riga che è destinato al terminale
Robert Anthony S. Tribiana

0 righe interessate, righe corrispondenti: 3 modificate: 0 ...?
trainoasis

22

Trovato! Ho dimenticato di eseguire l'hash della password quando l'ho modificata. Ho usato questa query per risolvere il mio problema:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

Ho dimenticato il PASSWORD('NEW PASSWORD')e ho appena inserito la nuova password in testo normale


assicurati di tornare e accettare la tua risposta per consentire agli altri di vedere la soluzione
ghostJago,

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html mostra come farlo con --init-file=se hai guardato fuori.
sabgenton

3
Qualche idea sul perché quando utilizzo lo stesso comando, viene restituito il seguente errore? Errore 1054 (42S22): colonna sconosciuta "Password" in "elenco campi"
Adrian M.

1
Hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '(' NUOVA PASSWORD ') dove user =' root '' alla riga 1
discipleartem

20

Si prega di seguire i passaggi seguenti.

passo 1. fermare mysql

passo 2. sudo mysqld_safe --skip-grant-tables

step3.mysql -u root

step4.use mysql;

step5.show tables;

step6.describe user;

step7.update user set authentication_string=password('1111') where user='root';

accedi con password 1111


3
flush privilegesè importante come ultimo passaggio.
Khom Nazid

È davvero fatto con il culo. Ho fatto tutti i tutorial per reimpostare la password. Tutto funziona tranne quando accedo con la nuova password, non funziona.
Shidomaru NeveRage

se mysqld non si avvia e un messaggio come questo demone mysqld con database da / var / lib / mysql mysqld_safe mysqld dal file pid /var/run/mysqld/mysqld.pid è terminato, eseguire questa operazione: mkdir / var / run / mysqld chomod 777 / var / run / mysqld e inizia tutto dall'accattonaggio
jokermt235

18

Ho cercato anche in giro e probabilmente alcune risposte si adattano ad alcune situazioni,

la mia situazione è Mysql 5.7 su un sistema Ubuntu 18.04.2 LTS:

(ottieni privilegi di root)

$ sudo bash

(imposta la password per l'utente root db + implementa la sicurezza nei passaggi)

# mysql_secure_installation

(dare accesso all'utente root tramite password al posto del socket)

(+ modifica: a quanto pare è necessario impostare di nuovo la password?)

(non impostarlo su "mySecretPassword" !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Mille grazie a zetacu (e erich ) per questa eccellente risposta (dopo aver cercato un paio d'ore ...)

Buon divertimento MrGreen

S.


Questa è la migliore risposta finora, almeno per il server mysql 5.7.
Zoltán Hajdú,

La migliore risposta. Grazie.
Luciano Fantuzzi

11

Su MySQL 8.0.4+

Per aggiornare l'utente root corrente:

select current_user();
set password = 'new_password';

Per aggiornare un altro utente:

set password for 'otherUser'@'localhost' = 'new_password';

Per impostare la politica della password prima di aggiornare la password:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Altro / modo migliore per aggiornare la password di root:

mysql_secure_installation

Vuoi mantenere l'autenticazione 5.x in modo da poter ancora utilizzare le app legacy?

Sopra my.cnf

default_authentication_plugin = mysql_native_password

Per aggiornare la radice:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

Questo ha funzionato per me -

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

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


ERRORE 1064 (42000): hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a 'IDENTIFICATO DA' MyNewPass '' alla riga 1
trainoasis

Ho appena copiato l'esatto in sql tramite CLI: o
trainoasis

Ovviamente, sshed al mio server + mysql -u root -p per arrivare al cli mysql
trainoasis

6

Devi reimpostare la password! passaggi per mac osx (testato e funzionante) e ubuntu

Ferma MySQL

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

Avvialo 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 di shell / terminale, accedi senza password:

$ mysql -u root

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

Avvia MySQL

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

la tua nuova password è "password".


Ho un messaggio: nessun database selezionato
Mimouni

@Mimouni provare questo: stackoverflow.com/questions/21944936/...
tk_

5

Per MySQL 5.7.6 e versioni successive:

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

Per MySQL 5.7.5 e versioni precedenti:

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

3

Per l'ultima versione di mysql attuale (8.0.16), nessuna di queste risposte ha funzionato per me.

Dopo aver esaminato diverse risposte e combinandole insieme, questo è ciò che ho finito per usare che ha funzionato:

update user set authentication_string='test' where user='root';

Spero che questo ti aiuti.


2

un errore comune in cui mi imbatto di tanto in tanto è che dimentico l' -popzione, quindi sei sicuro di aver usato:

mysql -u root -p

2

In MySQL 5.7, la password viene sostituita con "authentication_string".

uso

update user set authentication_string=password('myfavpassword') where user='root';

2

Utilizzando l' utilità della riga di comando mysqladmin per modificare la password MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

fonte


1

Ho provato la risposta di @kta ma non ha funzionato per me.

Sto usando MySQL 8.0

Questo ha funzionato per me:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
Aggiungi qualche spiegazione al tuo codice: come risolve esattamente una domanda vecchia di sette anni?
Nico Haase

Sembra che la sintassi sia stata modificata nel corso dei sette anni. Non avvolge la password con PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

L'hash della password deve essere un numero esadecimale di 41 cifre
Mimouni

1

Tanti commenti, ma questo metodo mi ha aiutato:

sudo mysqladmin -u root password 'my password'

Nel mio caso dopo l'installazione avevo ottenuto il servizio mysql senza una password per l'utente root e avevo bisogno di impostare la password per la mia sicurezza.


Potrebbe essere usato per reimpostare la password dell'utente root mysql senza conoscere quella vecchia. Ma assicurati che nessuno abbia accesso al tuo syslog, poiché questa password è registrata:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

interrompi tutti i servizi wamp, esci da wamp.

apri il blocco note quindi digita> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('');

quindi salvalo in c: drive con qualsiasi nome .. come questo "c: /example.txt"

ora vai al tuo "wamp" falder wamp> bin> mysql> mysql (la tua versione)> bin nel mio caso il percorso è "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

ora copia il tuo percorso quindi esegui cmd con (ctrl + r) quindi digita "cmd" (invio)

digitare cd quindi fare clic con il tasto destro su cmd e incollare il percorso (invio) ora digitare (mysqld --init-file = C: \ example.txt) senza parentesi graffe quindi (invio)

quindi riavvia il PC o apri taskmgr e uccidi mysqld.exe

avvia wamp e la tua password verrà rimossa ...


0

Per gli utenti MacOS, se dimentichi la password di root, la risposta di @ soharaK ( https://stackoverflow.com/a/28601069/5628856 ) è buona, ma ci sono un po 'più di trucchi:

Se stai usando le preferenze di sistema per avviare mysql lato server, semplicemente

sudo mysqld_safe --skip-grant-tables

potrebbe non funzionare per te.

Devi assicurarti che gli argomenti della riga di comando siano gli stessi di system start config.

Il seguente comando funziona per me:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Puoi usare

ps aux | grep mysql

per controllare il tuo.


-1

Su Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5 

Sostituisci 5.5con la tua versione attuale e ti verrà chiesta la nuova password di root.


In quale sistema operativo? Questo non ha senso.
Khom Nazid

-1
  1. Su Mac apri le preferenze di sistema> MySQL.
  2. Nella sezione di configurazione di MySQL verifica l'inizializzazione del database.
  3. modificare la password nel prompt. inizializza database
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.