sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo deshabilitar los inicios de sesión raíz de MySQL cuando no se proporciona una contraseña?

Los usuarios que encuentren este comportamiento en las versiones más recientes de MySQL/MariaDB (por ejemplo, Debian Stretch, etc.) deben tener en cuenta que en la tabla mysql.user hay una columna llamada 'complemento'. Si el complemento 'unix_socket' está habilitado, la raíz podrá iniciar sesión a través de la línea de comandos sin requerir una contraseña. Se desactivarán otros mecanismos de inicio de sesión.

Para comprobar si ese es el caso:

SELECT host, user, password, plugin FROM mysql.user;

que debería devolver algo como esto (con unix_socket habilitado):

+-----------+------+--------------------------+-------------+
| host      | user | password                 | plugin      |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+

Para deshabilitar eso y requerir que root use una contraseña:

UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

Nota: Como señaló @marioivangf (en un comentario) en las versiones más recientes de MySQL (por ejemplo, 5.7.x), es posible que deba configurar el complemento en 'mysql_native_password' (en lugar de en blanco).

Luego reinicie:

service mysql restart

¡Problema solucionado!:

[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Fuente:https://stackoverflow.com/a/44301734/3363571 Muchas gracias a @SakuraKinomoto (suba y vote su respuesta si la encuentra útil).