Ich habe MySQL installiert und während der Installation wurde ich nach einem Passwort gefragt, das ich eingegeben habe, aber jetzt sagt mein Lehrer, dass wir uns ohne Passwort als root anmelden können sollten.
Das funktioniert, aber ich bekomme keine Privilegien:
Das funktioniert nicht:
Dies auch nicht
Akzeptierte Antwort:
Ursache des Problems
Die Standardkonfiguration für die Anmeldung als root
user in MySQL 5.7 erfordert die Verwendung eines Authentifizierungs-Sockets. Dies kann durch Abfragen des user
überprüft werden Tabelle:
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
Aus der Dokumentation:
Das Socket-Plug-In prüft, ob der Socket-Benutzername (der Benutzername des
Betriebssystems) mit dem MySQL-Benutzernamen übereinstimmt, der vom Client
-Programm für den Server angegeben wird. Stimmen die Namen nicht überein, prüft das Plug-in,
ob der Socket-Benutzername mit dem Namen übereinstimmt, der in der Spalte
authentication_string der Systemtabellenzeile mysql.user angegeben ist. Wird eine
Übereinstimmung gefunden, lässt das Plugin die Verbindung zu.
Mit anderen Worten, für mysql ist standardmäßig kein Root-Passwort festgelegt – Sie müssen phpMyAdmin entweder als Root oder über sudo
ausführen (beides aus Sicherheitsgründen keine gute Idee), oder Sie ändern die Authentifizierungsmethode und setzen das Root-Passwort zurück, wie im Digital Ocean-Tutorial gezeigt.
Beachten Sie, dass abgesehen vom gleichen Namen MySQL-Benutzer und Systembenutzer nicht identisch sind. Sie können einen MySQL-Benutzer jdoe
haben und keinen solchen Benutzer auf dem Hostsystem haben. Also root
ist der Root-Benutzer von MySQL, nicht der Systembenutzer.
Schritte zum Ändern von Plugin und Passwort:
-
Öffnen Sie das Terminal und führen Sie
sudo mysql -u root
aus . Sie sollten eine Begrüßungsnachricht undmysql>
sehen prompt. Dies ist die MySQL-Shell, die sich von Ihrer Befehlszeilen-Shell unterscheidet, daher werden hier nur SQL-Anweisungen akzeptiert. -
Geben Sie die folgende Sequenz von SQL-Abfragen ein:
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
Beenden und versuchen, sich anzumelden:
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Wenn alles gut geht, sollten Sie sich über das neue Passwort von phpMyAdmin anmelden können. Wenn etwas schief geht, versuchen Sie, den Server ohne Berechtigungsprüfung neu zu starten (das ist Schritt Nr. 3 im Digital Ocean-Tutorial). Bei anderen Problemen können Sie hier oder auf Database Administrators – Stack Exchange
eine weitere Frage stellen Verwandt:Erstellen Sie LOG-Dateien, wenn Sie mehrere DATA-Dateien für tempdb erstellen?