Причина в том, что недавняя установка Ubuntu (может быть, и другие), mysql использует по умолчанию плагин UNIX auth_socket .
В основном означает, что: db_users, используя его , будет «auth» с помощью системных пользовательских credentias. Вы можете увидеть, настроен ли ваш пользователь root
следующим образом:
$ sudo mysql -u root # I had to use "sudo" since is 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 |
+------------------+-----------------------+
Как вы можете видеть в запрос, пользователь root
использует плагин auth_socket
. Есть два способа решить эту проблему:
mysql_native_password
плагин db_user
с вами system_user
(рекомендуется) Вариант 1:
$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ service mysql restart
Вариант 2: (замените YOUR_SYSTEM_USER своим именем пользователя)
$ 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 '';
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;
$ service mysql restart
Помните, что если вы используете опцию № 2, вам нужно будет подключиться к mysql в качестве имени вашей системы (mysql -u YOUR_SYSTEM_USER
)
Примечание. В некоторых системах (например, Debian stretch) плагин auth_socket называется 'unix_socket' , поэтому соответствующая команда SQL должна быть: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';