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/
# 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/
# 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
# Start without password
sudo mysqld_safe --skip-grant-tables &
Potresti ricevere l'errore con un messaggio - mysqld_safe Directory '/var/run/
# 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/
# 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.