Cambia la password dell'utente mysql utilizzando la riga di comando


84

Sto cercando di aggiornare la password per un utente del database utilizzando la riga di comando e non funziona per me. Questo è il codice che sto usando:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

Qualcuno potrebbe dirmi cosa c'è che non va in questo codice.


Bene, quali passaggi stai seguendo? Metterlo semplicemente dentro non funzionerà. Se ricordo bene è un processo e quel codice.
Idris

Ah. Ti ricordi il processo di come farlo?
user3310572

Questo è un po 'più dettagliato e dovrebbe essere più facile da capire innovativethought.net/2007/05/17/…
Idris

Risposte:


116

Nel codice, prova a racchiudere la password all'interno di virgolette singole. In alternativa, come da documentazione di mysql, dovrebbe funzionare quanto segue:

SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

FLUSH PRIVILEGES;

L'ultima riga è importante, altrimenti la modifica della password non avrà effetto purtroppo.

MODIFICARE:

Ho eseguito un test nel mio locale e ha funzionato -

mysql>  set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)

La mia è la versione 5. Puoi usare il seguente comando per determinare la tua versione:

SHOW VARIABLES LIKE "%version%";

4
Quando lo faccio, restituisce un errore di sintassi vicino al token imprevisto ('
user3310572

1
Quale versione di mysql stai usando? Ho ripreso la sintassi sopra dalla documentazione della versione 5.0. Hai provato il comando che ho postato?
hellboy

Credo di utilizzare una versione 4.0 e sì, l'ho provata
user3310572

Il comando funziona bene per me in MySQL Ver 14.14, assicurati che la password sia racchiusa tra virgolette e che tutte le virgolette nella password siano sfuggite.
Snaver

1
Stranamente, anche dopo il lavaggio, continua a non funzionare per me :-( Sto usando Mysql5.7.18-0ubuntu0.16.04.1
coding_idiot

37

A partire da MySQL 5.7.6, usa ALTER USER

Esempio:

ALTER USER 'username' IDENTIFIED BY 'password';

Perché:

  • SET PASSWORD ... = PASSWORD('auth_string') la sintassi è deprecata a partire da MySQL 5.7.6 e verrà rimossa in una futura versione di MySQL.

  • SET PASSWORD ... = 'auth_string'la sintassi non è deprecata, ma ALTER USERora è l'istruzione preferita per l'assegnazione delle password.


1
è vero anche per interagire con MySQL tramite PHP?
oldboy

@Anthony sì se la tua versione di MySQL è> = 5.7.6
Govind Rai

sono nuovo in MySQL. cosa fa ALTER USER ... IDENTIFIED BY ...esattamente? in che modo è diverso da UPDATE ... SET ...o INSERT INTO ...?
oldboy

1
ALTER USER ... IDENTIFIED BY ...è un'istruzione SQL che configura le autorizzazioni utente per il database. UPDATEe INSERThanno diverse funzionalità, che come i nomi suggeriscono, aggiornano i record e inseriscono i record nelle tabelle del database.
Govind Rai

2
dà errore in mariaDbERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
Pavel Niedoba

14

Nota: dovresti effettuare il login come utente root

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

6

questa è la risposta aggiornata per WAMP v3.0.6

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

FLUSH PRIVILEGES;

3

Prima di MySQL 5.7.6 funziona dalla riga di comando:

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"

Non ho un'installazione mysql su cui testare ma penso che nel tuo caso lo sarebbe

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"

2

In Windows 10, esci dal login corrente ed eseguilo dalla riga di comando

-> mysqladmin -u root password “newpassword”

dove invece di root potrebbe essere qualsiasi utente.


1

Questo funziona per me. Ho ottenuto la soluzione dalla pagina Web MYSQL

In MySQL esegui le seguenti query:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';

0

A partire da MySQL 8.0.18 Questo funziona bene per me

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';


-1

La tua root di accesso dovrebbe essere /usr/local/directadmin/conf/mysql.conf. Quindi prova a seguire

UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;

Host è il tuo host mysql.


1
Non funziona Restituzione di un errore di sintassi vicino al token imprevisto ('
user3310572
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.