Come cambiare la password 'root' di MySQL usando MySQL v5.7?


14

Ambiente attuale:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

Utente del comando Modifica password:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

Mi sto perdendo qualcosa?


prova ad avviare mysqlin modalità provvisoria. allora puoi cambiare la password di root
Mongrel il

A chiunque legga questa discussione. MySQL 5.7 ha cambiamenti sostanziali sotto il cofano. Si prega di leggere su di loro prima di aggiornare.
Rui F Ribeiro,

Risposte:


24

In MySQL 5.7, il passwordcampo nel campo mysql.usertabella è stato rimosso, ora il nome del campo è authentication_string.

Scegli prima il database:

mysql> use mysql;

E quindi mostra le tabelle:

mysql> show tables;

Troverai la usertabella e vedrai i suoi campi:

mysql> describe user;

Ti renderai conto che non esiste un campo denominato password, il campo password è denominato authentication_string. Quindi, basta fare questo:

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

Come suggerito da @Rui F Ribeiro, in alternativa puoi eseguire:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

1
+1 per il riferimento autenticazione_stringa. Di recente l'ho scoperto anche dopo l'aggiornamento a 5.7
Rui F Ribeiro,

4
Sebbene non sia interamente diretto a questa risposta, un'altra alternativa per 5.7 èSET PASSWORD FOR 'root' = PASSWORD('new_password');
Rui F Ribeiro,

1
@RuiFRibeiro grazie, aggiornata la mia risposta
Rahul il

1
Rahul Inizialmente ho modificato il thread in una versione successiva a 5.7, ma poi l'ho modificato in MySQL 5.7, per mantenere maggiormente lo spirito della domanda. ad esempio, @Shivu non sapeva che si trattava di una modifica in 5.7.
Rui F Ribeiro,

1
È un modo di inquadrare la domanda. Non stiamo modificando domande e risposte solo a beneficio dell'OP, ma anche per altri in seguito.
Rui F Ribeiro,

2

Il modo MySQL per cambiare la password è SET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

vedere il Manuale di riferimento di MySQL 5.7 / ... / SET Sintassi PASSWORD

L'istruzione SET PASSWORD assegna una password a un account utente MySQL, specificato come valore in chiaro (non crittografato) o crittografato:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

La risposta accettata da Rahul mostra come aggiornare la password con la DMLdichiarazione.

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

Attenzione: non è il modo ufficiale e supportato. Può causare problemi, se non sai cosa stai facendo. Non dimenticare FLUSH PRIVILEGES.

Per la maggior parte delle operazioni, come la creazione di un utente, la modifica dei suoi privilegi o la modifica della sua password, ti consigliamo di utilizzare le istruzioni di alto livello. Non solo sono più facili da usare e sono compatibili con un numero maggiore di versioni di MySQL, ma ti impediranno anche di commettere errori (ovviamente, ricorda di impostare la modalità sql "NO_AUTO_CREATE_USER"). Di solito funzionano bene anche in un ambiente ostile a MyISAM come un cluster Galera.

Smetti di usare FLUSH PRIVILEGES

Si prega di utilizzare GRANT, REVOKE, SET PASSWORD, o RENAME USERe non istruzioni DML diretti.

Aggiornamento: SET PASSWORD ... = La sintassi PASSWORD ('auth_string') è obsoleta a partire da MySQL 5.7.6 e verrà rimossa in una versione futura di MySQL.


1

mysqladmin -u user-name password -p "oldpassword" "newpass"

se riesci ad accedere allora prova questo ""non funzionerà prova una ''singola citazione

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';


Mentre preferisco la risposta mysqladmin, vedi la risposta di Rahul. La tua query SQL non è aggiornata. Ho corretto mysqladmin, mancava la direttiva password.
Rui F Ribeiro,

1
Grazie Ribeiro. Mi mancavaauthentication_string
Mongrel il

0

Nel mio caso

mysql.server start
$ mysql -uroot
mysql> update user set authentication_string=password('123456') where User='root';
mysql> exit;
mysql.server restart (if you not restart , connection will not work.)

Quindi penso che il comando di aggiornamento sia corretto, ma è necessario riavviare il server mysql.


-1

Per questo problema, ho usato un metodo semplice e scortese, ho rinominato il nome del campo in password, il motivo è che utilizzo il software mac navicat premium nell'errore di operazione visiva: colonna sconosciuta 'password' in 'campo Elenco', il il software stesso utilizza la password in modo che non possa funzionare facilmente. Pertanto, eseguo il root nella riga di comando del database, corri

Use mysql;

E quindi modificare il nome del campo:

ALTER TABLE user CHANGE authentication_string password text;

Dopo tutto normale.

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.