Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Root-Passwort von MySQL zurücksetzen

Dieses Tutorial enthält Schritte zum Zurücksetzen oder Ändern des Root-Passworts des MySQL-Servers, falls der Benutzer das Passwort vergessen hat. Es wird davon ausgegangen, dass Sie Zugriff auf das System haben, um den MySQL-Server zu stoppen und zu starten. Dieses Tutorial ist spezifisch für MySQL 8.0 und höher, obwohl es für ältere MySQL-Versionen, einschließlich MySQL 5.7, sofort einsatzbereit sein sollte . Wir können das Root-Passwort wie unten beschrieben auf zwei Arten zurücksetzen.

Notizen :Sie können auch den MySQL-Tutorials folgen – How To Install MySQL 8 on Ubuntu, How To Completely Remove MySQL From Ubuntu, and Learn Basic SQL Queries Using MySQL.

Passwort aktualisieren

Wir können einfach das Root-Passwort von MySQL aktualisieren, falls wir es bereits kennen. Dies kann mit den unten gezeigten Befehlen erfolgen. Die ÄNDERN Befehl ist der bevorzugte, da er auf MySQL 5.7 funktioniert und MySQL 8 , obwohl Sie jedem der Befehle folgen können.

# Bei MySQL anmelden
mysql -uroot -p
# ODER
mysql -u root -p

# MySQL - 5.7.5 und früher
mysql.user SET AKTUALISIEREN password=PASSWORD('password') WHERE user='root';

# MySQL - 5.7.6 und neuer
mysql.user SET AKTUALISIEREN authentication_string=PASSWORD ("password") where user='root';
# ODER
SET PASSWORD FOR 'root'@'localhost' =PASSWORD("password");

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# ODER
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

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

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Falls Sie Ihr Root-Passwort vergessen haben, können Sie entweder Prozess A befolgen oder Prozess B wie unten erwähnt.

Prozess A - Sicher

In diesem Prozess stoppen und starten wir den MySQL-Server, um das Init-Skript zum Ändern des Root-Passworts zu verwenden.

Schritt 1 - Stoppen Sie den Server

Als ersten Schritt dieses Prozesses müssen wir den Server stoppen. Dies kann mit den unten gezeigten Befehlen erfolgen.

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

# Using service
sudo service mysql stop

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

Schritt 2 - Erstellen Sie die Init-Datei

Erstellen Sie nun die Init-Datei und fügen Sie den Befehl zum Aktualisieren des Root-Passworts wie unten gezeigt hinzu.

# Init-Datei erstellen – Verwenden Sie Ihren bevorzugten Editor
sudo nano init-file.txt

# Fügen Sie die Abfrage zum Aktualisieren des Passworts hinzu

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# ODER
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

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

Schritt 3 – MySQL-Server starten

Starten Sie nun den MySQL-Server mit der unten gezeigten Init-Datei.

# Starten Sie den Server
sudo mysqld --init-file=init-file.txt &
# ODER
sudo mysqld_safe --init-file=init-file.txt &

Abhängig von Ihrer Serverinstallation kann es zu einer Reihe von Fehlern kommen.

Möglicherweise erhalten Sie den Fehler mit einer Meldung - mysqld_safe Directory '/var/run/ mysqld ' für UNIX-Socket-Datei nicht existiert . Wir müssen das mysqld erstellen Verzeichnis und erstellen Sie mysql als Eigentümer mit den unten gezeigten Befehlen.

# Stoppen Sie den Server

# Erstellen Sie ein Verzeichnis
sudo mkdir -p /var/run/mysqld

# Ändern Sie den Eigentümer
sudo chown mysql :mysql /var/run/mysqld

# Mit Init-Datei beginnen
sudo mysqld_safe --init-file=Init-Datei.txt &

Möglicherweise erhalten Sie die Fehlermeldung - ERROR 2002 (HY000):Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld .sock' . Befolgen Sie in einem solchen Fall die unten aufgeführten Befehle, um das Problem zu beheben.

# MySQL Server normal starten - Ubuntu
sudo service mysql start

# Zum Sock-Verzeichnis navigieren
cd /var/run

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

# Stoppen Sie den Server normal - Ubuntu
sudo service mysql stop

# Stellen Sie die Sock wieder her
sudo mv ./mysqld.bak ./mysqld

# Starten Sie MySQL im unsicheren Modus
sudo mysqld_safe --skip-grant-tables &

Schritt 4 – Stoppen und starten Sie den MySQL-Server

Stoppen und starten Sie nun den MySQL-Server mit den regulären Befehlen, wie unten gezeigt.

# Verwendung von init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ODER
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
# ODER
sudo systemctl stop mysql
sudo systemctl start mysql

Beenden Sie ggf. die bestehenden Prozesse. Nur verwenden, wenn die obigen Befehle zum Stoppen und Starten des Servers nicht funktionieren.

# Finde die Prozesse
ps aux | grep mysqld
ps aux | grep mysql

# Prozesse beenden
sudo killall mysqld
sudo killall mysql

Schritt 5 - Passwort testen

Testen Sie schließlich das neue Passwort mit dem unten gezeigten Befehl.

# Neues Passwort testen
mysql -u root -p

Stellen Sie sicher, dass Sie die Init-Datei löschen, nachdem Sie Ihr neues Passwort getestet haben. Falls es nicht klappt, können Sie dem Prozess B folgen .

Prozess B - Weniger sicher

In diesem Prozess stoppen und starten wir den MySQL-Server, ohne dass ein Passwort für die Anmeldung erforderlich ist.

Schritt 1 - Stoppen Sie den Server

Als ersten Schritt müssen wir den aktuell laufenden MySQL-Server stoppen, um diesen Vorgang abzuschließen. Dies kann mit den unten gezeigten Befehlen erfolgen.

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

# Using service
sudo service mysql stop

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

Schritt 2 - MySQL ohne Passwort starten

Starten Sie nun den MySQL-Server mit deaktiviertem Passwort mit dem unten gezeigten Befehl. Stellen Sie sicher, dass Sie kaufmännisches Und hinzufügen (&) am Ende dieses Befehls. Es ermöglicht auch --skip-networking automatisch, um Remote-Verbindungen zu verhindern.

# Ohne Passwort starten
sudo mysqld_safe --skip-grant-tables &

Möglicherweise erhalten Sie den Fehler mit einer Meldung - mysqld_safe Directory '/var/run/ mysqld ' für UNIX-Socket-Datei nicht existiert . Wir müssen das mysqld erstellen Verzeichnis und erstellen Sie mysql als Eigentümer mit den unten gezeigten Befehlen.

# Stoppen Sie den Server

# Erstellen Sie ein Verzeichnis
sudo mkdir -p /var/run/mysqld

# Ändern Sie den Eigentümer
sudo chown mysql :mysql /var/run/mysqld

# Ohne Passwort starten
sudo mysqld_safe --skip-grant-tables &

Möglicherweise erhalten Sie die Fehlermeldung - ERROR 2002 (HY000):Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld .sock' . In einem solchen Fall , folgen Sie den unten aufgeführten Befehlen für Ubuntu, um es zu beheben.

# Starten Sie MySQL Server
sudo service mysql start

# Navigieren Sie zum Sock-Verzeichnis
cd /var/run

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

# Stoppen Sie den Server
sudo service mysql stop

# Stellen Sie den Sock wieder her
sudo mv ./mysqld.bak ./mysqld

# MySQL im unsicheren Modus starten
sudo mysqld_safe --skip-grant-tables &

Schritt 3 – Mit MySQL verbinden

Öffnen Sie nun ein anderes Terminal oder verbinden Sie sich über eine andere Shell mit dem Server, um den Client zu verbinden.

# Direkt verbinden
mysql

# Als Root verbinden
mysql -uroot
# ODER
mysql -u root

Schritt 4 - Passwort ändern

Ändern Sie in diesem Schritt das Root-Passwort mit den unten gezeigten Befehlen. Weitere Informationen finden Sie auch im Abschnitt Passwort aktualisieren dieses Tutorials, um andere Befehle zum Ändern des Passworts zu verwenden.

# Passwort ändern

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

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

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Schritt 5 – Stoppen und starten Sie den MySQL-Server

Stoppen und starten Sie nun den MySQL-Server mit den regulären Befehlen, wie unten gezeigt.

# Verwendung von init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ODER
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
# ODER
sudo systemctl stop mysql
sudo systemctl start mysql

Beenden Sie ggf. die bestehenden Prozesse. Nur verwenden, wenn die obigen Befehle zum Stoppen und Starten des Servers nicht funktionieren.

# Finde die Prozesse
ps aux | grep mysqld
ps aux | grep mysql

# Prozesse beenden
sudo killall mysqld
sudo killall mysql

Schritt 6 – Passwort testen

Testen Sie schließlich das neue Passwort mit dem unten gezeigten Befehl.

# Neues Passwort testen
mysql -u root -p

Zusammenfassung

So können wir das Passwort des Root-Benutzers oder eines anderen Benutzers zurücksetzen oder ändern, falls wir das Passwort vergessen haben.