Password Mysql scaduta. Impossibile connettersi


87

Ho appena cancellato il mio Mac e ho eseguito una nuova installazione di El Capitan. Sto lottando per connettermi a Mysql ora. Dopo aver eseguito un processo di configurazione del server Web, ho creato un semplice file di test PHP:

<?php
  $conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
  if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error; 
  else echo "Connected successfully";
  phpinfo();
?>

Quando lo eseguo, ottengo questo errore:

Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.

Non ho mai visto prima quella risposta da una connessione. Come lo risolvo se non riesco a connettermi?

MODIFICARE

Nel terminale ho inserito il comando:

mysql -u root -p

Questo mi ha chiesto la mia password (quella attuale) che ho inserito. Ora ho accesso ai comandi mysql, ma qualsiasi cosa provi si traduce in questo errore:

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

Come si reimposta la password utilizzando ALTER USER?


Ho lo stesso problema.
Rohan Sanap

questo è davvero fastidioso che un intero servizio possa essere chiuso a causa di questo
tofutim

1
Prova a correre/usr/local/mysql/bin/mysqladmin -u root -p password
Connor Leech

1
@ConnorLeech ha passato ore a provare a reimpostare la password di root scaduta MariaDB di homebrew, ma questo ha risolto il problema per me - grazie!
Alex Holsgrove

Risposte:


179

Così ho finalmente trovato la soluzione da solo.

Per prima cosa sono entrato nel terminale e ho digitato:

mysql -u root -p

Ciò ha richiesto la mia password corrente che ho digitato e mi ha dato accesso per fornire più comandi mysql. Qualunque cosa abbia provato da qui ha dato questo errore:

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

Questo è fonte di confusione perché non riuscivo a vedere un modo per reimpostare la password usando l' ALTER USERistruzione, ma ho trovato un'altra semplice soluzione:

SET PASSWORD = PASSWORD('xxxxxxxx');


Funzionava correttamente? Ha dato qualche errore dopo aver seguito questi passaggi in futuro?
Rohan Sanap

Molte grazie! Questo ha funzionato anche per me. Mi ha risparmiato molte ore.
TBJ

5
Uso la versione 5.7.9 di MySQL e ora è deprecata poiché questo messaggio di errore dal prompt dei comandi di MySQL ci dice: Avviso (codice 1287): 'SET PASSWORD = PASSWORD (' <plaintext_password> ')' è deprecato e verrà rimosso in una versione futura. Utilizza invece SET PASSWORD = '<plaintext_password>'
Fabiano

Mi dispiace che questo non abbia funzionato per me, ma l'utente alternativo pubblicato da Piotr N. ha funzionato. Forse operando su una versione diversa di MySQL.
MG Developer

89

Per prima cosa, utilizzo:

 mysql -u root -p

Dando la mia attuale password per "root". Il prossimo:

mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
       `root`@`localhost` PASSWORD EXPIRE NEVER;

Cambia 'new_password'con una nuova password per l'utente "root".
Ha risolto il mio problema.


3
Recupero dell'errore: 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 'USER' root '@' localhost 'IDENTIFICATO DA' newPassword ',' root '@' localhost 'PASSWORD' alla riga 1
Ketav Chotaliya

Ha funzionato bene. ALTER USER 'username' @ '%' IDENTIFICATO DA 'your_password', 'user' @ '%' PASSWORD EXPIRE MAI;
TheLegendaryCopyCoder

1
Ottenere l'errore: ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
Pulkit Pahwa

52

mysqladmin -u [username] -p passwordha funzionato per me su OS X El Capitan e MySQL 5.7.12 Community Server. Esempio:

$ /usr/local/mysql/bin/mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

È simile alla risposta di pavan sachi, ma con richieste di password.

Il mio errore era "# 1862 - La tua password è scaduta. Per accedere devi cambiarla utilizzando un client che supporta le password scadute." alla prima schermata di login di phpMyAdmin.


Ha funzionato anche per me, OS X El Capital e MySQL 5.17.13! Grazie per questo!
Zeke

5
Vale la pena ricordare che la parola "password" non è un segnaposto , mentre "root" è il nome dell'utente che desideri aggiornare:mysqladmin -u [username] -p password
random_user_name

Questa è l'unica cosa che (apparentemente) ha funzionato per me su Linux (Fedora 25). Grazie.
Avinash Meetoo

Hallelujah!! migliore. comando. mai. Ho cercato ovunque ma questo è finalmente ciò che ha risolto. Grazie mille
Connor Leech,

19

Scadenza della password MySQL

Il ripristino della password risolverà il problema solo temporaneamente. Da MySQL 5.7.4 a 5.7.10 (per incoraggiare una maggiore sicurezza, vedere MySQL: Politica di scadenza della password ) il valore della default_password_lifetimevariabile predefinito è 360 (1 anno). Per queste versioni, se non apporti modifiche a questa variabile (o ai singoli account utente) tutte le password scadono dopo 360 giorni.

Quindi da uno script potresti ricevere il messaggio: "La tua password è scaduta. Per accedere devi cambiarla utilizzando un client che supporta le password scadute."

Per interrompere la scadenza automatica della password, accedere come root ( mysql -u root -p), quindi, per i client che si connettono automaticamente al server (ad es. Script.) Modificare le impostazioni di scadenza della password:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

OPPURE puoi disabilitare la scadenza automatica della password per tutti gli utenti :

SET GLOBAL default_password_lifetime = 0;

Come sottolineato da Mertaydin nei commenti, per rendere questo permanente aggiungi la seguente riga a un my.cnffile che MySQL legge all'avvio, sotto il [mysqld]gruppo delle impostazioni. La posizione di my.cnfdipende dalla tua configurazione (ad esempio Windows o Homebrew su OS X o un programma di installazione) e se lo desideri per utente su Unix o globale:

[mysqld] default_password_lifetime = 0 (Potrebbero esserci anche altre impostazioni qui ...)

Vedi i documenti MySQL sui file di configurazione .


2
Con una password già scaduta, solo l'impostazione globale ha funzionato per me.
maaartinus

2
Puoi aggiungere questo parametro a /etc/mysql/my.cnf, sotto mysqld; default_password_lifetime = 0 altrimenti, dopo il riavvio di mysql riceverai di nuovo lo stesso errore.
mertaydin

2
Grazie @Dave Everitt e @mertaydin!
WebMW

11

Ho riscontrato lo stesso problema di recente durante l'installazione di mysql su mac os x capitan. Non ho trovato la risposta corretta qui, quindi aggiungendo questa risposta.

MySql nelle versioni attuali, genera una password temporanea quando installi mysql. Usa questa password per impostare una nuova password utilizzando l'utilità mysqladmin come di seguito;

/ usr / local / mysql / bin / mysqladmin -u root -p '<tua password temporanea>' password '<tua nuova password>'

Spero che aiuti te e gli altri.


7

Basta scaricare MySQL workbench per accedere. Ti verrà chiesto di cambiare la password immediatamente e automaticamente.


4

avvia MYSQL in modalità provvisoria

mysqld_safe --skip-grant-tables &

Connettiti al server MYSQL

mysql -u root

eseguire comandi SQL per reimpostare la password:

use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');

Ultimo passaggio, riavvia il tuo servizio mysql


4

ho affrontato questo problema pochi giorni fa. Per la migliore soluzione per la versione 5.7 di MySQL; accedi alla tua console mysql e modifica la password con il seguente comando:

ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;

4

ATTENZIONE: questo consentirà a qualsiasi utente di accedere

Ho dovuto provare qualcos'altro. Poiché la mia password di root è scaduta e la modifica non era un'opzione perché

Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

temporaneamente l'aggiunta di skip-grant-tablessotto [mysqld]di my.cnfe riavviare mysql ha fatto il trucco


4

Su Windows in phpmyadmin guarda in Variabili: default_password_lifetime e impostalo su 0 (invece di 360), divertiti.

È possibile che mySQL impieghi ancora 360 giorni, quindi aggiungi in my.ini:

[mysqld]
default_password_lifetime=0

E riavvia mysql.


È possibile che il default_password_lifetime richieda ancora 360 giorni, quindi in my.ini aggiungi:
Laurent Zminka

4

Questo ha funzionato per me:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;

1

riavviare il server MySQL con l'opzione --skip-grant-tables E quindi impostare una nuova password di root

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

Ora, se necessario, puoi aggiornare la tabella mysql.user (campo password_expired = 'N') per non far scadere la password.


Quando inserisco il primo comando mysql -u rootricevo questo errore:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
CaribouCode

Per la cronaca sono riuscito ad entrare cambiando il primo comando in mysql -u root -ppoi mi ha chiesto la password che ho inserito. Il tuo prossimo comando non ha funzionato per me perché dicevaYou must reset your password using ALTER USER statement before executing this statement.
CaribouCode

Sai come reimpostare la password utilizzando ALTER USER? Non sono così bravo con Mysql (sono più una persona NodeJS / MongoDB).
CaribouCode

1

Tutte queste risposte utilizzano console Linux per accedere a MySQL.

Se sei su Windows e stai usando WAMP, puoi iniziare aprendo la console MySQL ( click WAMP icon->MySQL->MySQL console).

Quindi ti chiederà di inserire la tua password attuale, inseriscila.

E poi digita SET PASSWORD = PASSWORD('some_pass');


1

migliore soluzione facile:

[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;

e poi funziona bene.



0

La scadenza della password è una nuova funzionalità in MySQL 5.6 o 5.7.

La risposta è chiara: usa un client in grado di cambiare la password scaduta (penso che Sequel Pro possa farlo).

La libreria MySQLi ovviamente non è in grado di modificare la password scaduta.

Se hai un accesso limitato a localhost e hai solo un client console, il client mysql standard può farlo.


2
Grazie per la risposta. Ho scaricato Sequel Pro e ho provato a connettermi tramite presa con quello. Ricevo lo stesso errore riguardo alla scadenza della password ...
CaribouCode

0

Apri la console MySQL e digita SET PASSWORD = 'la tua password'; e quindi premere il tasto INVIO che imposterà la password definita per l'utente root.

Puoi solo scrivere SET PASSWORD = ''; che imposterà la password come vuota per l'utente root.


0

Ho fatto qualcosa di simile.

UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';

1
You must reset your password using ALTER USER statement before executing this statement.
Weijing Jay Lin

0

Basta aprire MySQL Workbench e scegliere [Istanza] Avvio / Arresto e fare clic su Avvia server. Ha funzionato per me

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.