Festlegen des Root-Passworts in der Neuinstallation von MySQL 5.7

11

Ich versuche, MySQL in einer Portion mit zu installieren CentOS Linux release 7.2.1511. Schauen Sie sich die Prozessinstallation an:

# sudo yum install mysql-server

Ausgabe:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Ich habe den MySQL-Damon ausgeführt:

# sudo service mysqld start

Überprüfen des Dienstes:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Hier kommt das Problem, das mich verrückt macht. Ich möchte zum ersten Mal ein Root-Passwort festlegen, also habe ich Folgendes getan:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Aber die Ausgabe: Sichern der MySQL-Serverbereitstellung.

Passwort für Benutzer root eingeben: Fehler: Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Passwort: NO)

Wenn Sie den Fehler googeln, besteht die Lösung in 90% der Fälle darin, den folgenden mysqld_safe --skip-grant-tables &Befehl aufzurufen :

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Es wird jedoch mysqld_safeein Fehler "Befehl nicht gefunden" angezeigt. Ich habe auch mit getestet sudo mysqld --skip-grant-tables &, aber es macht nichts. Ich würde mich freuen, wenn Sie mich in die richtige Richtung führen, um das Root-Passwort festzulegen. Vielen Dank im Voraus.

Manix
quelle
Benötigen Sie diese Binärdateien, um in der PATH. Oder Sie brauchen volle Wege. (Dies ist eher eine Linux-Frage als eine MySQL-Frage.)
Rick James

Antworten:

18

Wenn Sie nur den Befehl mysql unter dem Root-Benutzer ausführen, wird Ihnen der Zugriff ohne Eingabe des Kennworts gewährt, da die Socket-Authentifizierung für root @ localhost aktiviert ist.

Dieser Leitfaden ist irreführend.

Die einzige Möglichkeit, ein Kennwort festzulegen, besteht darin, zur nativen Authentifizierung zu wechseln, z.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
quelle
Du bist der Retter! Arbeite als Charme!.
Zugor
9

Bei meiner wahnsinnigen Suche nach einer Lösung habe ich mir /var/log/mysqld.logdiese Zeile angesehen und sie gefunden:

[Hinweis] Für root @ localhost wird ein temporäres Kennwort generiert: abc123

Mysql 5.7+ generiert anscheinend ein zufälliges Kennwort in der Installation und wird in dieser Datei dazu aufgefordert.

Manix
quelle
7

Führen Sie die folgenden Schritte aus, um das Kennwort zurückzusetzen:

$ sudo systemctl start mysqld

Setzen Sie das MySQL-Server-Root-Passwort zurück.

$sudo grep 'temporary password' /var/log/mysqld.log

Ausgabe so etwas wie:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Verwenden Sie das obige Passwort beim Zurücksetzen des mysql_secure_installation- Prozesses.

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Sie haben das Root-Passwort des MySQL-Servers erfolgreich zurückgesetzt. Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der MySQL-Server eine Verbindung herstellt oder nicht.

$ mysql -u root -p

Siehe meinen Artikel: Installieren Sie das neueste MySQL 5.7 unter RHEL / Centos 7

Arvind
quelle
3

All das hat bei mir nicht funktioniert und ich habe eine Stunde oder länger damit verbracht, alle anderen Vorschläge von der MYSql-Website für alles auf SO auszuprobieren. Endlich habe ich es geschafft:

Hinweis: Während "Passwort für Benutzer root eingeben" angezeigt wurde, hatte ich nicht das ursprüngliche Passwort, daher habe ich nur dasselbe Passwort eingegeben, das als neues Passwort verwendet werden soll.

Hinweis: Es gab nur /var/log/mysqld.log /var/log/mysql/error.log

  1. töte die aktuelle mysqld pid
  2. Führen Sie mysqld mit sudo / usr / sbin / mysqld & aus
  3. run / usr / bin / mysql_secure_installation

    Ausgabe von mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Sichern der MySQL-Serverbereitstellung.

    Passwort für Benutzer root eingeben:

    Mit VALIDATE PASSWORD PLUGIN können Kennwörter getestet und die Sicherheit verbessert werden. Es überprüft die Stärke des Kennworts und ermöglicht es den Benutzern, nur die Kennwörter festzulegen, die sicher genug sind. Möchten Sie das VALIDATE PASSWORD Plugin einrichten?

    Drücken Sie y | Y für Ja, eine andere Taste für Nein: Nein. Vorhandenes Kennwort für root verwenden. Passwort für root ändern? ((Drücken Sie y | Y für Ja, eine andere Taste für Nein): y

    Neues Kennwort:

    Neues Kennwort erneut eingeben: Standardmäßig verfügt eine MySQL-Installation über einen anonymen Benutzer, sodass sich jeder bei MySQL anmelden kann, ohne dass ein Benutzerkonto für ihn erstellt werden muss. Dies ist nur zum Testen gedacht und um die Installation etwas reibungsloser zu gestalten. Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.

    Anonyme Benutzer entfernen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen. Dies stellt sicher, dass jemand das Root-Passwort aus dem Netzwerk nicht erraten kann.

    Remote-Login aus der Ferne nicht zulassen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Standardmäßig wird MySQL mit einer Datenbank namens "test" geliefert, auf die jeder zugreifen kann. Dies ist auch nur zum Testen vorgesehen und sollte vor dem Umzug in eine Produktionsumgebung entfernt werden.

    Testdatenbank entfernen und darauf zugreifen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y

    • Testdatenbank löschen ... Erfolg.

    • Entfernen von Berechtigungen für die Testdatenbank ... Erfolgreich.

    Durch das erneute Laden der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen sofort wirksam werden.

    Berechtigungstabellen jetzt neu laden? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Alles erledigt!

JGlass
quelle