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>



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow