Mysql
 sql >> Database >  >> RDS >> Mysql

Reimposta la password di root di MySQL

Questo tutorial fornisce i passaggi per reimpostare o modificare la password di root del server MySQL nel caso in cui l'utente abbia dimenticato la password. Presuppone che tu abbia accesso al sistema per arrestare e avviare il server MySQL. Questo tutorial è specifico per MySQL 8.0 e versioni successive, anche se dovrebbe funzionare immediatamente per le versioni precedenti di MySQL, incluso MySQL 5.7 . Possiamo reimpostare la password di root in due modi, come indicato di seguito.

Note :Puoi anche seguire i tutorial di MySQL - Come installare MySQL 8 su Ubuntu, Come rimuovere completamente MySQL da Ubuntu e Impara le query SQL di base usando MySQL.

Aggiorna password

Possiamo semplicemente aggiornare la password di root di MySQL nel caso in cui la conosciamo già. Può essere fatto usando i comandi come mostrato di seguito. L'ALTER comando è quello preferito poiché funziona su MySQL 5.7 e MySQL 8 , anche se puoi seguire uno qualsiasi dei comandi.

# Login to MySQL
mysql -uroot -p
# OR
mysql -u root -p

# MySQL - 5.7.5 and earlier
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';

# MySQL - 5.7.6 and newer
UPDATE mysql.user SET authentication_string=PASSWORD("password") where user='root';
# OR
SET PASSWORD FOR 'root'@'localhost' = PASSWORD("password");

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Nel caso in cui hai dimenticato la password di root, puoi seguire il Processo A o Processo B come indicato di seguito.

Processo A - Protetto

In questo processo, arresteremo e avvieremo il server MySQL per utilizzare lo script init per modificare la password di root.

Passaggio 1:arresto del server

Dobbiamo fermare il server come primo passo di questo processo. Può essere fatto usando i comandi come mostrato di seguito.

# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql

Fase 2:crea il file di inizializzazione

Ora crea il file init e aggiungi il comando per aggiornare la password di root come mostrato di seguito.

# Create Init File - Use your preferred editor
sudo nano <path to init file>init-file.txt

# Add the query to update password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

Passaggio 3:avvia MySQL Server

Ora avvia il server MySQL usando il file init come mostrato di seguito.

# Start the server
sudo mysqld --init-file=<path to init file>init-file.txt &
# OR
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Potrebbe generare una serie di errori a seconda dell'installazione del server.

Potresti ricevere l'errore con un messaggio - mysqld_safe Directory '/var/run/ mysqld ' per il file socket UNIX non esiste . Dobbiamo creare mysqld directory e fare mysql come proprietario utilizzando i comandi come mostrato di seguito.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start with init file
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Potresti ricevere il messaggio di errore - ERRORE 2002 (HY000):Impossibile connettersi al server MySQL locale tramite socket '/var/run/mysqld /mysqld .calzino' . In tal caso, segui i comandi indicati di seguito per risolverlo.

# Start MySQL Server normally - Ubuntu
sudo service mysql start

# Navigate to sock directory
cd /var/run

# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop the server normally - Ubuntu
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Fase 4 - Arresta e avvia il server MySQL

Ora ferma e avvia il server MySQL usando i normali comandi come mostrato di seguito.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

# Using service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql

Terminare i processi esistenti se necessario. Utilizzare solo se i comandi precedenti non funzionano per arrestare e avviare il server.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Passaggio 5:verifica password

Infine, prova la nuova password usando il comando come mostrato di seguito.

# Test new password
mysql -u root -p

Assicurati di eliminare il file init dopo aver testato la tua nuova password. Nel caso non dovesse funzionare, puoi seguire il Processo B .

Processo B - Meno sicuro

In questo processo, arresteremo e quindi avvieremo il server MySQL senza richiedere alcuna password per accedere.

Passaggio 1:arresto del server

Come primo passo per completare questo processo, dobbiamo interrompere il server MySQL attualmente in esecuzione. Può essere fatto usando i comandi come mostrato di seguito.

# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql

Passaggio 2:avvia MySQL senza password

Ora avvia il server MySQL con la password disabilitata usando il comando come mostrato di seguito. Assicurati di aggiungere e commerciale (&) alla fine di questo comando. Consente inoltre --skip-networking automaticamente per impedire connessioni remote.

# Start without password
sudo mysqld_safe --skip-grant-tables &

Potresti ricevere l'errore con un messaggio - mysqld_safe Directory '/var/run/ mysqld ' per il file socket UNIX non esiste . Dobbiamo creare il mysqld directory e fare mysql come proprietario utilizzando i comandi come mostrato di seguito.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start without password
sudo mysqld_safe --skip-grant-tables &

Potresti ricevere il messaggio di errore - ERRORE 2002 (HY000):Impossibile connettersi al server MySQL locale tramite socket '/var/run/mysqld /mysqld .calzino' . In questo caso , segui i comandi indicati di seguito per Ubuntu per risolverlo.

# Start MySQL Server
sudo service mysql start

# Navigate to sock directory
cd /var/run

# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop the server
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Passaggio 3:connessione a MySQL

Ora apri un altro terminale o connettiti al server tramite un'altra shell per connettere il client.

# Connect Directly
mysql

# Connect as Root
mysql -uroot
# OR
mysql -u root

Fase 4 - Modifica password

In questo passaggio, modificare la password di root utilizzando i comandi come mostrato di seguito. Puoi anche fare riferimento alla sezione Aggiorna password di questo tutorial per utilizzare altri comandi per modificare la password.

# Change Password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Passaggio 5 - Arresta e avvia il server MySQL

Ora ferma e avvia il server MySQL usando i normali comandi come mostrato di seguito.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

# Using service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql

Terminare i processi esistenti se necessario. Utilizzare solo se i comandi precedenti non funzionano per arrestare e avviare il server.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Passaggio 6:verifica password

Infine, prova la nuova password usando il comando come mostrato di seguito.

# Test new password
mysql -u root -p

Riepilogo

In questo modo possiamo reimpostare o modificare la password dell'utente root o di qualsiasi altro utente nel caso in cui abbiamo dimenticato la password.