Ricerca…


introduzione

Dopo MySQL 5.7, quando installiamo MySQL a volte non è necessario creare un account di root o fornire una password di root. Per impostazione predefinita, quando si avvia il server, la password predefinita viene archiviata nel file mysqld.log . Dobbiamo accedere al sistema usando quella password e dobbiamo cambiarlo.

Osservazioni

Il ripristino e il ripristino della password di root predefinita con questo metodo è applicabile solo per MySQL 5.7+

Cosa succede quando l'avvio iniziale del server

Dato che la directory dei dati del server è vuota:

  • Il server è inizializzato.
  • Il certificato SSL e i file chiave vengono generati nella directory dei dati.
  • Il plug-in validate_password è installato e abilitato.
  • L'account superuser 'root' @ 'localhost' viene creato. La password per il superutente è impostata e memorizzata nel file di log degli errori.

Come cambiare la password di root usando la password predefinita

Per rivelare la password di "root" predefinita:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Modifica la password di root il prima possibile accedendo con la password temporanea generata e imposta una password personalizzata per l'account superuser:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Nota: il plugin validate_password di MySQL è installato per impostazione predefinita. Ciò richiede che le password contengano almeno una lettera maiuscola, una lettera minuscola, una cifra e un carattere speciale e che la lunghezza totale della password sia di almeno 8 caratteri.

reimpostare la password di root quando "/ var / run / mysqld" per il file socket UNIX non esiste "

se dimentico la password, ricevo l'errore.

$ mysql -u root -p    

Inserire la password:

ERRORE 1045 (28000): accesso negato per utente 'root' @ 'localhost' (utilizzando la password: YES)

Ho provato a risolvere il problema conoscendo prima lo stato:

$ systemctl status mysql.service

mysql.service - MySQL Community Server Loaded: caricato (/lib/systemd/system/mysql.service; enabled; impostazione del fornitore: it Attivo: attivo (in esecuzione) da Thu 2017-06-08 14:31:33 IST; 38s fa

Poi ho usato il codice mysqld_safe --skip-grant-tables & ho ricevuto l'errore:

mysqld_safe La directory '/ var / run / mysqld' per il file socket UNIX non esiste.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Ho risolto:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Ora uso lo stesso codice mysqld_safe --skip-grant-tables & e get

mysqld_safe Avvio del demone mysqld con i database da / var / lib / mysql

Se uso $ mysql -u root :

Versione server: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle e / o le sue affiliate. Tutti i diritti riservati.

Oracle è un marchio registrato di Oracle Corporation e / o delle sue affiliate. Gli altri nomi possono essere marchi dei rispettivi proprietari.

Digita "aiuto"; o "\ h" per aiuto. Digita "\ c" per cancellare l'istruzione di input corrente.

mysql>

Ora è il momento di cambiare password:

mysql> use mysql
mysql> describe user;

Informazioni sulla tabella di lettura per il completamento dei nomi di tabelle e colonne È possibile disattivare questa funzionalità per ottenere un avvio più rapido con -A

Database cambiato

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

oppure Se si dispone di un account root mysql che può connettersi ovunque, si dovrebbe anche fare:

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

Metodo alternativo:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

E se hai un account root che può accedere da ovunque:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

ora è necessario quit da mysql e fermarsi / iniziare

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

ora di nuovo `mysql -u root -p 'e usa la nuova password per ottenere

mysql>



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow