Denna handledning innehåller steg för att återställa eller ändra root-lösenordet för MySQL-servern om användaren glömt lösenordet. Det förutsätter att du har tillgång till systemet för att stoppa och starta MySQL-servern. Denna handledning är specifik för MySQL 8.0 och högre, även om det borde fungera direkt för äldre versioner av MySQL inklusive MySQL 5.7 . Vi kan återställa root-lösenordet på två sätt som nämns nedan.
Anteckningar :Du kan också följa MySQL-handledningarna - Hur man installerar MySQL 8 på Ubuntu, hur man tar bort MySQL helt från Ubuntu och lär dig grundläggande SQL-frågor med MySQL.
Uppdatera lösenord
Vi kan helt enkelt uppdatera root-lösenordet för MySQL om vi redan vet det. Det kan göras med hjälp av kommandona som visas nedan. ALTER kommandot är det föredragna eftersom det fungerar på MySQL 5.7 och MySQL 8 , även om du kan följa vilket som helst av kommandona.
# Logga in på MySQL
mysql -uroot -p
# ELLER
mysql -u root -p
# MySQL - 5.7.5 och tidigare
UPPDATERA mysql.user SET password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 och nyare
UPPDATERA mysql.user SET authentication_string=LÖSENORD ("lösenord") där user='root';
# ELLER
STÄLL IN LÖSENORD FÖR 'root'@'localhost' =LÖSENORD("lösenord");
# MySQL - 5.7, 8
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD AV '';
# ELLER
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIERAD MED caching_sha2_password AV '';
# Flush
SPOLA PRIVILEGIER;
# Koppla bort
avsluta;
Om du har glömt ditt root-lösenord kan du följa antingen Process A eller Process B som nämns nedan.
Process A – Säker
I denna process kommer vi att stoppa och starta MySQL-servern för att använda init-skriptet för att ändra root-lösenordet.
Steg 1 - Stoppa servern
Vi måste stoppa servern som det första steget i denna process. Det kan göras med hjälp av kommandona som visas nedan.
# Using init
sudo /etc/init.d/mysqld stop
# ELLER
sudo /etc/init.d/mysql stop
# Using service
sudo service mysql stop
# Using systemd
sudo systemctl stop mysqld.service
# ELLER
sudo systemctl stop mysql
Steg 2 - Skapa Init-filen
Skapa nu init-filen och lägg till kommandot för att uppdatera root-lösenordet som visas nedan.
# Skapa Init-fil - Använd din föredragna editor
sudo nanoinit-file.txt
# Lägg till frågan för att uppdatera lösenordet
# MySQL - 5.7, 8
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD AV '';
# ELLER
ÄNDRAR ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV '';
# MySQL - 8
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED caching_sha2_password AV '';
Steg 3 - Starta MySQL Server
Starta nu MySQL-servern med init-filen som visas nedan.
# Starta servern
sudo mysqld --init-file=init-file.txt &
# ELLER
sudo mysqld_safe --init-file=init-fil.txt &
Det kan orsaka en massa fel beroende på din serverinstallation.
Du kan få felmeddelandet med ett meddelande - mysqld_safe Directory '/var/run/
# Stoppa servern
# Gör katalog
sudo mkdir -p /var/run/mysqld
# Byt ägare
sudo chown mysql :mysql /var/run/mysqld
# Börja med init-fil
sudo mysqld_safe --init-file=init-fil.txt &
Du kan få felmeddelandet - ERROR 2002 (HY000):Kan inte ansluta till lokal MySQL-server via socket '/var/run/
# Starta MySQL Server normalt - Ubuntu
sudo-tjänsten mysql start
# Navigera till sockkatalogen
cd /var/run
# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Stoppa servern normalt - Ubuntu
sudo service mysql stop
# Återställ socken
sudo mv ./mysqld.bak ./mysqld
# Starta MySQL i osäkert läge
sudo mysqld_safe --skip-grant-tables &
Steg 4 - Stoppa och starta MySQL-servern
Stoppa nu och starta MySQL-servern med de vanliga kommandona som visas nedan.
# Använder init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ELLER
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Använder tjänsten
sudo-tjänsten mysql stop
sudo-tjänsten mysql start
# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ELLER
sudo systemctl stop mysql
sudo systemctl start mysql
Avsluta befintliga processer vid behov. Använd endast om ovanstående kommandon inte fungerar för att stoppa och starta servern.
# Hitta processerna
ps aux | grep mysqld
ps aux | grep mysql
# Döda processerna
sudo killall mysqld
sudo killall mysql
Steg 5 - Testa lösenord
Testa slutligen det nya lösenordet med kommandot som visas nedan.
# Testa nytt lösenord
mysql -u root -p
Se till att ta bort init-filen efter att du testat ditt nya lösenord. Om det inte fungerar kan du följa Process B .
Process B - Mindre säker
I denna process kommer vi att stoppa och sedan starta MySQL-servern utan att behöva något lösenord för att logga in.
Steg 1 - Stoppa servern
Vi måste stoppa den MySQL-server som för närvarande körs som det första steget för att slutföra denna process. Det kan göras med hjälp av kommandona som visas nedan.
# Using init
sudo /etc/init.d/mysqld stop
# ELLER
sudo /etc/init.d/mysql stop
# Using service
sudo service mysql stop
# Using systemd
sudo systemctl stop mysqld.service
# ELLER
sudo systemctl stop mysql
Steg 2 - Starta MySQL utan lösenord
Starta nu MySQL-servern med lösenordet inaktiverat med kommandot som visas nedan. Se till att lägga till
ampersand (&) i slutet av detta kommando. Det möjliggör också --skip-nätverk automatiskt för att förhindra fjärranslutningar.
# Börja utan lösenord
sudo mysqld_safe --skip-grant-tables &
Du kan få felmeddelandet med ett meddelande - mysqld_safe Directory '/var/run/
mysqld ' för UNIX-socketfilgör inte finns . Vi måste skapamysqld katalogen och görmysql som ägare med hjälp av kommandona som visas nedan.
# Stoppa servern
# Gör katalog
sudo mkdir -p /var/run/mysqld
# Byt ägare
sudo chown mysql :mysql /var/run/mysqld
# Starta utan lösenord
sudo mysqld_safe --skip-grant-tables &
Du kan få felmeddelandet - ERROR 2002 (HY000):Kan inte ansluta till lokal MySQL-server via socket '/var/run/
mysqld /mysqld .sock' . I sådantfall , följ de nedan nämnda kommandona för att Ubuntu ska lösa det.
# Start MySQL Server
sudo service mysql start
# Navigera till sock katalogen
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Stoppa servern
sudo-tjänsten mysql stop
# Återställ socken
sudo mv ./mysqld.bak ./mysqld
# Starta MySQL i osäkert läge
sudo mysqld_safe --skip-grant-tables &
Steg 3 - Anslut till MySQL
Öppna nu en annan terminal eller anslut till servern via ett annat skal för att ansluta klienten.
# Anslut direkt
mysql
# Anslut som rot
mysql -uroot
# ELLER
mysql -u root
Steg 4 – Ändra lösenord
I det här steget ändrar du root-lösenordet med hjälp av kommandona som visas nedan. Du kan också se avsnittet Uppdatera lösenord i denna handledning för att använda andra kommandon för att ändra lösenordet.
# Ändra lösenord
# MySQL - 5.7, 8
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD AV '';
# ELLER
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV '';
# MySQL - 8
ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED caching_sha2_password AV '';
# Spola
SPOLA PRIVILEGIER;
# Koppla bort
avsluta;
Steg 5 - Stoppa och starta MySQL-servern
Stoppa nu och starta MySQL-servern med de vanliga kommandona som visas nedan.
# Använder init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ELLER
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Använder tjänsten
sudo-tjänsten mysql stop
sudo-tjänsten mysql start
# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ELLER
sudo systemctl stop mysql
sudo systemctl start mysql
Avsluta befintliga processer vid behov. Använd endast om ovanstående kommandon inte fungerar för att stoppa och starta servern.
# Hitta processerna
ps aux | grep mysqld
ps aux | grep mysql
# Döda processerna
sudo killall mysqld
sudo killall mysql
Steg 6 - Testa lösenord
Testa slutligen det nya lösenordet med kommandot som visas nedan.
# Testa nytt lösenord
mysql -u root -p
Sammanfattning
Så här kan vi återställa eller ändra lösenordet för root-användare eller någon annan användare om vi har glömt lösenordet.