Algunos sistemas como Ubuntu, MySQL utilizan Complemento auth_socket de UNIX por defecto.
Básicamente significa que:los usuarios de db_usuarios que lo usen serán "autenticados" por las credenciales de usuario del sistema. Puedes ver si tu root
el usuario se configura así haciendo lo siguiente:
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 puede ver en la consulta, la root
el usuario está usando el auth_socket
complemento.
Hay dos formas de resolver esto:
- Puede establecer la raíz usuario para usar el
mysql_native_password
complemento - Puedes crear un nuevo
db_user
contigosystem_user
(recomendado)
Opción 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
Opción 2: (reemplace YOUR_SYSTEM_USER con el nombre de usuario que tiene)
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
Recuerda que si usas la opción #2 tendrás que conectarte a MySQL como tu nombre de usuario del sistema (mysql -u YOUR_SYSTEM_USER
).
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Según el comentario de @andy, parece que MySQL 8.x.x actualizó/reemplazó el auth_socket
para caching_sha2_password
. No tengo una configuración de sistema con MySQL 8.x.x para probar esto. Sin embargo, los pasos anteriores deberían ayudarlo a comprender el problema. Aquí está la respuesta:
Un cambio a partir de MySQL 8.0.4 es que el nuevo complemento de autenticación predeterminado es 'caching_sha2_password'. El nuevo 'YOUR_SYSTEM_USER' tendrá este complemento de autenticación y ahora puede iniciar sesión desde el shell Bash con "mysql -u YOUR_SYSTEM_USER -p" y proporcionar la contraseña para este usuario en el aviso. No es necesario el paso "ACTUALIZAR el complemento SET de usuario".
Para la actualización del complemento de autenticación predeterminado 8.0.4, consulte https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/