Některé systémy jako Ubuntu, MySQL používají Plugin UNIX auth_socket ve výchozím nastavení.
V zásadě to znamená, že:uživatelé db_users, kteří jej používají, budou "ověřeni" pověřením uživatele systému. Můžete vidět, zda váš root
uživatel se nastaví takto:
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 |
+------------------+-----------------------+
Jak můžete vidět v dotazu, root
uživatel používá auth_socket
plugin.
Existují dva způsoby, jak to vyřešit:
- Můžete nastavit kořen použijte
mysql_native_password
plugin - Můžete vytvořit nového uživatele
db_user
s vámisystem_user
(doporučeno)
Možnost 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
Možnost 2: (nahraďte YOUR_SYSTEM_USER uživatelským jménem, které máte)
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
Pamatujte, že pokud použijete možnost #2, budete se muset připojit k MySQL jako uživatelské jméno vašeho systému (mysql -u YOUR_SYSTEM_USER
).
Poznámka: Na některých systémech (např. Debian 9
(Roztáhnout)) plugin 'auth_socket' se nazývá 'unix_socket'
, takže odpovídající příkaz SQL by měl být:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Z komentáře @andy se zdá, že MySQL 8.x.x aktualizoval/nahradil auth_socket
pro caching_sha2_password
. Nemám nastavení systému s MySQL 8.x.x, abych to otestoval. Výše uvedené kroky by vám však měly pomoci problém pochopit. Zde je odpověď:
Jednou změnou od MySQL 8.0.4 je, že nový výchozí ověřovací plugin je 'caching_sha2_password'. Nový 'YOUR_SYSTEM_USER' bude mít tento ověřovací plugin a můžete se nyní přihlásit z prostředí Bash pomocí "mysql -u YOUR_SYSTEM_USER -p" a zadat heslo pro tohoto uživatele ve výzvě. Krok „UPDATE user SET plugin“ není potřeba.
Pro aktualizaci výchozího ověřovacího pluginu 8.0.4 viz https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/