GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist das Standard-Root-Passwort für MySQL 5.7

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:

verwenden
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 soll
mysqld_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.

  1. grep 'temporary password' /var/log/mysqld.log
  2. 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


Linux
  1. Wie setzt man das MySQL-Root-Passwort zurück?

  2. Was ist der Zweck des Benutzers „mysql.sys@localhost“.

  3. Was ist der Zweck des „Systembenutzers“ in der MySQL-Replikation?

  4. Was ist der Zweck der Gruppe „Wheel“ in Linux?

  5. Wozu dient die 'soname'-Option zum Erstellen gemeinsam genutzter Bibliotheken?

Die 5 besten kostenlosen Ersatzprodukte für MySQL Server

Die Aktion Installation für das Produkt MySQL Server 5.7.19 ist fehlgeschlagen.

Was sind die standardmäßigen GCC-Include-Verzeichnisse?

So ändern Sie das MySQL-Root-Passwort

Was ist die Partitions-ID / der Dateisystemtyp für UDF?

Was ist die Standarddatei für „hostname“?