Alguns sistemas como Ubuntu, MySQL está usando o Plugin auth_socket do UNIX por padrão.
Basicamente significa que:db_users usando-o, serão "autenticados" pelas credenciais do usuário do sistema. Você pode ver se o seu
root
user é configurado assim fazendo o seguinte: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 |
+------------------+-----------------------+
Como você pode ver na consulta, o
root
o usuário está usando o auth_socket
plugar. Existem duas maneiras de resolver isso:
- Você pode definir a raiz usuário use a
mysql_native_password
plug-in - Você pode criar um novo
db_user
com vocêsystem_user
(recomendado)
Opção 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
Opção 2: (substitua YOUR_SYSTEM_USER pelo nome de usuário que você possui)
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
Lembre-se que se você usar a opção #2 você terá que se conectar ao MySQL como seu nome de usuário do sistema (
mysql -u YOUR_SYSTEM_USER
). Observação: Em alguns sistemas (por exemplo, Debian 9 (Stretch)) o plugin 'auth_socket' é chamado 'unix_socket' , então o comando SQL correspondente deve ser:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Do comentário de @andy parece que o MySQL 8.x.x atualizou/substituiu o
auth_socket
para caching_sha2_password
. Eu não tenho uma configuração de sistema com MySQL 8.x.x para testar isso. No entanto, as etapas acima devem ajudá-lo a entender o problema. Aqui está a resposta:Uma mudança a partir do MySQL 8.0.4 é que o novo plugin de autenticação padrão é 'caching_sha2_password'. O novo 'YOUR_SYSTEM_USER' terá este plugin de autenticação e você pode efetuar login a partir do shell Bash agora com "mysql -u YOUR_SYSTEM_USER -p" e fornecer a senha para este usuário no prompt. Não há necessidade da etapa "UPDATE user SET plugin".
Para a atualização do plug-in de autenticação padrão 8.0.4, consulte https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/