MySQL
Stellen Sie das Standard-Root-Passwort für MySQL 5.7 und höher wieder her
Suche…
Einführung
Nach MySQL 5.7 müssen wir bei der Installation von MySQL manchmal kein Root-Konto erstellen oder ein Root-Passwort angeben. Wenn wir den Server starten, wird das Standardkennwort standardmäßig in der Datei mysqld.log
gespeichert. Wir müssen uns mit diesem Passwort am System anmelden und es ändern.
Bemerkungen
Das Wiederherstellen und Zurücksetzen des Standard-Root-Kennworts mit dieser Methode gilt nur für MySQL 5.7+
Was passiert beim ersten Start des Servers?
Angenommen, das Datenverzeichnis des Servers ist leer:
- Der Server wird initialisiert.
- SSL-Zertifikate und Schlüsseldateien werden im Datenverzeichnis generiert.
- Das validate_password-Plugin ist installiert und aktiviert.
- Das Superuser-Konto 'root' @ 'localhost' wird erstellt. Das Passwort für den Superuser wird festgelegt und in der Fehlerprotokolldatei gespeichert.
So ändern Sie das Root-Kennwort mithilfe des Standardkennworts
So zeigen Sie das Standardkennwort "root" an:
shell> sudo grep 'temporary password' /var/log/mysqld.log
Ändern Sie das root-Passwort so schnell wie möglich, indem Sie sich mit dem generierten temporären Passwort anmelden und ein benutzerdefiniertes Passwort für das Superuser-Konto festlegen:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
Hinweis: Das Plug-In für validate_password von MySQL wird standardmäßig installiert. Dies setzt voraus, dass Kennwörter mindestens einen Großbuchstaben, einen Kleinbuchstaben, eine Ziffer und ein Sonderzeichen enthalten und dass die Gesamtlänge des Kennworts mindestens 8 Zeichen beträgt.
Root-Passwort zurücksetzen, wenn "/ var / run / mysqld 'für UNIX-Socket-Datei nicht vorhanden ist"
Wenn ich das Passwort vergessen habe, bekomme ich eine Fehlermeldung.
$ mysql -u root -p
Passwort eingeben:
FEHLER 1045 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Kennwort: YES)
Ich habe versucht, das Problem zu lösen, indem ich zuerst den Status wusste:
$ systemctl status mysql.service
mysql.service - MySQL Community Server geladen: geladen (/lib/systemd/system/mysql.service; aktiviert; Hersteller-Voreinstellung: de Aktiv: aktiv (läuft) seit Do. 2017-06-08 14:31:33 IST; vor 38s
Dann habe ich den Code mysqld_safe --skip-grant-tables &
aber ich bekomme den Fehler:
mysqld_safe Das Verzeichnis '/ var / run / mysqld' für die UNIX-Socketdatei ist nicht vorhanden.
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
I löste:
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
Jetzt benutze ich den gleichen Code wie mysqld_safe --skip-grant-tables &
und bekomme
mysqld_safe Starten des mysqld-Daemons mit Datenbanken aus / var / lib / mysql
Wenn ich $ mysql -u root
bekomme ich:
Serverversion: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle und / oder ihre verbundenen Unternehmen. Alle Rechte vorbehalten.
Oracle ist eine eingetragene Marke der Oracle Corporation und / oder ihrer verbundenen Unternehmen. Andere Namen sind möglicherweise Marken ihrer jeweiligen Eigentümer.
Geben Sie "help" ein. oder '\ h' um Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen.
mysql>
Nun ist es Zeit das Passwort zu ändern:
mysql> use mysql
mysql> describe user;
Lesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu ermöglichen
Datenbank geändert
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
oder Wenn Sie ein MySQL-Root-Konto haben, das von überall aus eine Verbindung herstellen kann, sollten Sie auch Folgendes tun:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Alternative Methode:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
Und wenn Sie ein Root-Konto haben, auf das von überall aus zugegriffen werden kann:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
Jetzt müssen Sie von MySQL quit
und stoppen / starten
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
nun wieder `mysql -u root -p 'und benutze das neue Passwort um zu bekommen
mysql>