Sommige systemen zoals Ubuntu, MySQL gebruikt de UNIX auth_socket plug-in standaard.
In feite betekent dit dat:db_users die het gebruiken, worden "geauthenticeerd" door de gebruikersgegevens van het systeem. U kunt zien of uw root
gebruiker wordt zo ingesteld door het volgende te doen:
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 |
+------------------+-----------------------+
Zoals je kunt zien in de query, is de root
gebruiker gebruikt de auth_socket
plug-in.
Er zijn twee manieren om dit op te lossen:
- U kunt de root . instellen gebruiker om het
mysql_native_password
. te gebruiken plug-in - U kunt een nieuwe
db_user
. maken met jousystem_user
(aanbevolen)
Optie 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
Optie 2: (vervang YOUR_SYSTEM_USER door de gebruikersnaam die je hebt)
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
Onthoud dat als u optie #2 gebruikt, u verbinding moet maken met MySQL als uw systeemgebruikersnaam (mysql -u YOUR_SYSTEM_USER
).
Opmerking: Op sommige systemen (bijv. Debian 9
(Stretch)) de plug-in 'auth_socket' heet 'unix_socket'
, dus het bijbehorende SQL-commando moet zijn:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Uit de opmerking van @andy blijkt dat MySQL 8.x.x de auth_socket
heeft bijgewerkt/vervangen voor caching_sha2_password
. Ik heb geen systeemconfiguratie met MySQL 8.x.x om dit te testen. De bovenstaande stappen zouden u echter moeten helpen het probleem te begrijpen. Hier is het antwoord:
Een verandering vanaf MySQL 8.0.4 is dat de nieuwe standaard authenticatie plug-in 'caching_sha2_password' is. De nieuwe 'YOUR_SYSTEM_USER' heeft deze authenticatie-plug-in en je kunt nu inloggen vanuit de Bash-shell met "mysql -u YOUR_SYSTEM_USER -p" en het wachtwoord voor deze gebruiker op de prompt opgeven. De stap "UPDATE user SET plugin" is niet nodig.
Voor de 8.0.4 standaard authenticatie plug-in update, zie https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/