sql >> Databasteknik >  >> RDS >> Mysql

Återställ rotlösenordet för MySQL

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 nano init-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/ mysqld ' för UNIX-socketfil gör inte finns . Vi måste skapa mysqld katalogen och gör mysql 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

# 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/mysqld /mysqld .sock' . I ett sådant fall, följ nedanstående kommandon för att lösa det.

# 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-socketfil gör inte finns . Vi måste skapa mysqld katalogen och gör mysql 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ådant fall , 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.


  1. Grunderna i sys.dm_exec_requests

  2. Få det vanligaste värdet för varje värde i en annan kolumn i SQL

  3. Hur man får åtkomst till PhpMyAdmin utan cPanel-inloggning

  4. Mitt PDO-uttalande fungerar inte