Einige Systeme wie Ubuntu, MySQL verwenden den UNIX auth_socket Plugin standardmäßig.
Im Grunde bedeutet dies Folgendes:db_users, die es verwenden, werden durch die Anmeldeinformationen des Systembenutzers authentifiziert. Sie können sehen, ob Ihr root
Benutzer wird folgendermaßen eingerichtet:
sudo mysql -u root # I had to use "sudo" since it was a new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
Wie Sie in der Abfrage sehen können, ist die root
Benutzer verwendet den auth_socket
Plugin.
Es gibt zwei Möglichkeiten, dies zu lösen:
- Sie können die Root festlegen Benutzer das
mysql_native_password
verwenden Plugin - Sie können einen neuen
db_user
erstellen mit Ihnensystem_user
(empfohlen)
Möglichkeit 1:
sudo mysql -u root # I had to use "sudo" since it was new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
sudo service mysql restart
Option 2: (Ersetzen Sie YOUR_SYSTEM_USER durch den Benutzernamen, den Sie haben)
sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
sudo service mysql restart
Denken Sie daran, dass Sie sich bei Verwendung von Option #2 mit Ihrem Systembenutzernamen mit MySQL verbinden müssen (mysql -u YOUR_SYSTEM_USER
).
Hinweis: Auf einigen Systemen (z. B. Debian 9
(Stretch)) das 'auth_socket'-Plugin heißt 'unix_socket'
, also sollte der entsprechende SQL-Befehl lauten:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Aus dem Kommentar von @andy geht hervor, dass MySQL 8.x.x den auth_socket
aktualisiert/ersetzt hat für caching_sha2_password
. Ich habe kein System-Setup mit MySQL 8.x.x, um dies zu testen. Die obigen Schritte sollten Ihnen jedoch helfen, das Problem zu verstehen. Hier ist die Antwort:
Eine Änderung ab MySQL 8.0.4 ist, dass das neue Standard-Authentifizierungs-Plug-in „caching_sha2_password“ ist. Der neue „YOUR_SYSTEM_USER“ wird dieses Authentifizierungs-Plugin haben und Sie können sich jetzt von der Bash-Shell mit „mysql -u YOUR_SYSTEM_USER -p“ anmelden und das Passwort für diesen Benutzer an der Eingabeaufforderung eingeben. Der Schritt „UPDATE user SET plugin“ ist nicht erforderlich.
Informationen zum Update des 8.0.4-Standardauthentifizierungs-Plugins finden Sie unter https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/