MySQL 5.7 hat das sichere Modell geändert:Jetzt erfordert die MySQL-Root-Anmeldung ein sudo
Die einfachste (und sicherste) Lösung besteht darin, einen neuen Benutzer zu erstellen und die erforderlichen Berechtigungen zu gewähren.
1. Verbinden Sie sich mit mysql
sudo mysql --user=root mysql
2. Erstellen Sie einen Benutzer für phpMyAdmin
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Referenz - https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7
Auf meinem neuen Linux Mint 19 war MySQL Server 5.7 bereits standardmäßig installiert.
Aber was ist der MySQL root
Passwort? Es stellt sich heraus, dass:
Die Standardinstallation verwendet auth_socket
zur Authentifizierung, anstelle von Passwörtern!
Es erlaubt eine passwortfreie Anmeldung, sofern man sich mit dem gleichen Benutzernamen am Linux-System anmeldet. Um sich als MySQL-Root anzumelden user
, man kann sudo:
sudo mysql --user=root
Aber wie ändert man dann das Root-Passwort? Um zu veranschaulichen, was vor sich geht, habe ich einen neuen Benutzer „me“ mit vollen Rechten erstellt mit:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Vergleich von „me“ mit „root“:
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin | HEX(authentication_string) |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket | |
| me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+
Da es auth_socket verwendet, kann das Root-Passwort nicht geändert werden:die SET PASSWORD
Befehl schlägt fehl und mysql_secure_installation
werde nichts erreichen...
==> Um diesen alternativen Authentifizierungsmodus zu zappen und den MySQL root
zurückzugeben Benutzer zur Verwendung von Passwörtern:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Eine gute Erklärung.
Weitere Einzelheiten finden Sie im MySQL-Handbuch.
Es gibt so viele Antworten da draußen, die sagen, dass man mysql neu installieren oder eine Kombination aus
verwenden sollmysqld_safe --skip-grant-tables
und / oder
UPDATE mysql.user SET Password=PASSWORD('password')
und / oder etwas anderes ...
... Nichts davon hat bei mir funktioniert
Hier ist, was für mich unter Ubuntu 18.04 von oben funktioniert hat
Mit besonderer Anerkennung für diese Antwort, die mich aus der Frustration darüber herausgeholt hat ...
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
Beachten Sie die Zeilen, die lauten:
user = debian-sys-maint
password = blahblahblah
Dann:
$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; // When you don't have auto-commit switched on
Entweder:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Oder:
// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
Dann:
mysql> FLUSH PRIVILEGES;
mysql> COMMIT; // When you don't have auto-commit switched on
mysql> EXIT
$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!
Nachdem Sie MySQL-Community-Server 5.7 neu auf Linux installiert haben, müssen Sie das temporäre Passwort aus /var/log/mysqld.log finden, um sich als root anzumelden.
grep 'temporary password' /var/log/mysqld.log
- Führen Sie
mysql_secure_installation
aus neues Passwort ändern
ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html