Ripristina la password di root di MySQL usando l'istruzione ALTER USER dopo l'installazione su Mac


184

Sono nuovo di tutta l'esperienza Mac. Di recente ho installato MySQL e sembra che debba reimpostare la password dopo l'installazione. Non mi permetterà di fare nient'altro.

Ora ho già resettato la password nel solito modo:

update user set password = password('XXX') where user = root;

(A proposito: mi ci sono voluti anni per capire che MySQL per qualche bizzarro motivo ha rinominato il campo "password" in "autenticazione_stringa". Sono abbastanza sconvolto da cambiamenti del genere.)

Sfortunatamente sembra che debba cambiare la password in un modo diverso che non mi è noto. Forse qualcuno qui ha già riscontrato questo problema?

Risposte:


508

Se questa NON è la prima volta che imposti la password, prova questo metodo:

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

E se viene visualizzato il seguente errore, è molto probabile che non sia mai stata impostata la password prima:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Per impostare la password per la prima volta :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Riferimento: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
Grazie! Messaggio di errore molto confuso da MySQL però!
Ed.

1
Questo ha funzionato per me con mysql-5.7.13-osx10.11-x86_64
GiriB,

1
Dopo 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', visualizzo il seguente errore: 'ERRORE 29 (HY000): File' ./mysql/user.MYD 'non trovato (Errcode: 2 - No file o directory) '. Qualcuno può aiutarmi?
Ray Kim

4
Noterai che contrariamente a quanto suggerisce MySQL, non usi l'istruzione "ALTER USER", ma solo "SET PASSWORD" ...
Fabien Haddadi,

1
Il primo esempio potenzialmente tenta di impostare una password per un altro utente rispetto a quello che si sta utilizzando quando si invia quella linea. Il secondo tenta di impostare la password per l'utente utilizzato per accedere a mysql. Quindi le opere successive.
Hafenkranich,

130

Se hai iniziato a usare mysql mysql -u root -p

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

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


1
Grazie! Questo ha funzionato per me! Sto usando mysql-5.7.11-osx10.10-x86_64.
LeArNr,

Questo ha funzionato; Grazie! Mi rattrista profondamente il fatto che, sebbene MySQL sia un programma così ampiamente utilizzato, non esiste una documentazione completa da installare e farlo funzionare velocemente.
Shatu,

Grazie ! Mi ha aiutato
Sparw

3
Dopo molte frustrazioni, una variante di questo ha funzionato su Mint 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

Mille grazie. Questa è l'unica cosa che ha funzionato per me.
Randy

33

Ho lo stesso problema su Mac

Innanzitutto, accedi a mysql con la modalità sandbox

mysql -u <user> -p --connect-expired-password

Quindi, impostare la password

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

Funziona per me ~

via: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
Sembra abbastanza complicato tenendo presente che è necessario farlo prima di utilizzare il database.
seba.wagner,

nell'avvertimento che vuole che tu usiSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray il

22

Se si utilizza MySQL 5.7.6 e versioni successive:

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

Se usi MySQL 5.7.5 e precedenti:

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

Documentazione MySQL


1
Sto usando MySQL 5.7.9 e la strana cosa ha SET PASSWORD = PASSWORD('my_pass')funzionato per me. Ci sono commenti di persone con versioni più recenti che menzionano che questa affermazione ha funzionato anche per loro. Nonostante ciò, ho votato a favore della tua risposta poiché hai trovato questo particolare riferimento nei documenti MySQL che nessuno ha menzionato prima.
Armfoot,

MySQL 8 SET PASSWORD lanciato ed errore. ALTER USER ha funzionato.
Timar Ivo Batis,

13

Su MySQL 5.7.x devi passare alla password nativa per poterla cambiare, come:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

Esegui questi:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Quindi corri

./mysql -u root

Dovrebbe effettuare il login. Ora esegui i privilegi FLUSH;

Quindi esci dalla console MySQL e prova ad accedere. Se non funziona, esegui questi:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Cambia xxxxxx nella tua nuova password. Quindi prova ad accedere nuovamente.

Aggiornare. Vedi questo http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Dovrebbe risolvere il tuo problema.

Se sei in oracolo, prova questo

ALTER USER username IDENTIFIED BY password

No, scusa anche questo non funziona. Almeno non più. La colonna "password" è stata rinominata da Oracle, a proposito. Ora si chiama authentication_string. Ma non posso eseguire questo comando, perché devo prima cambiare la password usando il comando ALTER USER. Questo è incredibilmente frustrante, perché non è così che tradizionalmente aggiorneresti la password. ALTER dovrebbe essere riservato a tabelle, funzioni e cose, non alterando le voci in una tabella. Questa è la dichiarazione di aggiornamento. (mi dispiace per il rant)
dengar81

@Shivan Paw: Due avvertimenti che mi aspetterei: mysqladmin: [Avvertimento] L'uso di una password sull'interfaccia della riga di comando può essere insicuro. Avvertenza: poiché la password verrà inviata al server in testo normale, utilizzare la connessione SSL per garantire la sicurezza della password. - Vorrei considerare che la password è stata aggiornata. E in effetti posso accedere con la nuova password. Tuttavia, non riesco ancora a eseguire alcuna query, poiché devo aggiornare la password con il comando ALTER USER :(.
dengar81

@Shivan Paw: provare cosa? Ho già provato a usare i comandi che hai suggerito. Reimpostazione della password utilizzando il comando ./mysqladmin (due avvisi) e quindi procedere con l'esecuzione dell'aggiornamento su mysql.user ... Il secondo comando ha esito negativo con il messaggio "È necessario reimpostare la password utilizzando ALTER USER [...]"
dengar81

Questa è l'unica soluzione che ha funzionato per me. se hai una password scaduta nell'ultima versione di mysql, questo non ti consentirà ALTER_USER o SET_PASSWORD.
Aaron Henderson,

7

Forse provarlo?

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

o

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

A seconda dell'accesso che usi.

(e non sono sicuro di dover cambiare i nomi dei campi ...)

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


Non è un problema, questo non funziona: ERRORE 1820 (HY000): è necessario reimpostare la password utilizzando l'istruzione ALTER USER prima di eseguire questa istruzione.
dengar81,

7

ALTER USER 'root' @ 'localhost' IDENTIFICATO DA 'new_password';

Usa questa linea ...


7

UPDATE user SET authentication_string = PASSWORD ("MyPassWord") DOVE utente = 'root'; ERRORE 1064 (42000): si è verificato un errore nella sintassi SQL; controlla il manuale corrispondente alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '("MyPassWord") DOVE utente =' root '' alla riga 1

Risolto con

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

Riferimento dal sito sottostante

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

Su Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), ho effettuato l'accesso come: mysql -uroot -pquindi ho digitato la password generata da MySQL al momento dell'installazione. Poi..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Esempio:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

E puoi digitare "Ab1234"


3

Mysql 5.7.24 ottiene il primo accesso root

passaggio 1: ottenere la password dal registro

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

passaggio 2: accedi con lui a mysql

mysql -uroot -p'wHkJHUxeR4)w'

passaggio 3: inserisci la nuova password di root

SET PASSWORD = PASSWORD('xxxxx');

hai capito ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

come risolverlo?

esegui questo SET GLOBAL validate_password_policy=LOW;

Riprova SET PASSWORD = PASSWORD('xxxxx');



2

Ecco come funziona per me.

mysql> show databases ;

ERRORE 1820 (HY000): è necessario reimpostare la password utilizzando l'istruzione ALTER USER prima di eseguire questa istruzione.

mysql> uninstall plugin validate_password;

ERRORE 1820 (HY000): è necessario reimpostare la password utilizzando l'istruzione ALTER USER prima di eseguire questa istruzione.

mysql> alter user 'root'@'localhost' identified by 'root';

Query OK, 0 righe interessate (0,01 sec)

mysql> flush privileges;

Query OK, 0 righe interessate (0,03 sec)


1

Quando lo usi SET PASSWORD = PASSWORD('your_new_password');potrebbe bloccarsi

(ERRORE 1819 (HY000): la password non soddisfa i requisiti della politica corrente)

.puoi usare SET GLOBAL validate_password_policy=LOW;per inclinarlo.


1

nella versione 5.7. il campo 'password' è stato cancellato. 'authentication_string' lo sostituisce

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

Ho anche avuto lo stesso problema in mac OS X 10.10.4 (Yosemite) .SET PASSWORD funziona per me.Alter password per mysql-mysql> SET PASSWORD = PASSWORD ('your_password'); Interrogazione OK, 0 righe interessate, 1 avviso (0,01 sec)

imposta la tua variabile di percorso ambiente Mysql in .bash_profile e aggiungi la riga seguente
export PATH = $ PATH: / usr / local / mysql / bin, dopodiché, esegui il seguente comando: source .bash_profile


0

Ho avuto il problema dopo aver installato mysql workbench e mysql community server. Password generata durante l'installazione del server. Facendo doppio clic sull'istanza locale esistente in workbench è stata attivata una finestra di dialogo in cui è possibile impostare la nuova password.


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Per me va bene.


0

ricorda le versioni 5.7.23 e successive: la tabella utente non ha la password della colonna invece della stringa di autenticazione, quindi di seguito funziona durante il ripristino della password per un utente.

update user set authentication_string=password('root') where user='root';
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.