Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como desabilitar os logins root do MySQL quando nenhuma senha é fornecida?


Os usuários que encontrarem esse comportamento em versões mais recentes do MySQL/MariaDB (por exemplo, Debian Stretch, etc) devem estar cientes de que na tabela mysql.user existe uma coluna chamada 'plugin'. Se o plug-in 'unix_socket' estiver ativado, o root poderá fazer login via linha de comando sem exigir uma senha. Outros mecanismos de login serão desabilitados.

Para verificar se é o caso:
SELECT host, user, password, plugin FROM mysql.user;

que deve retornar algo assim (com unix_socket habilitado):
+-----------+------+--------------------------+-------------+
| host      | user | password                 | plugin      |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+

Para desabilitar isso e exigir que o root use uma senha:
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

Observação: Conforme observado por @marioivangf (em um comentário) em versões mais recentes do MySQL (por exemplo, 5.7.x), você pode precisar definir o plug-in como 'mysql_native_password' (em vez de em branco).

Em seguida, reinicie:
service mysql restart

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

Fonte:https://stackoverflow.com/a/44301734/3363571 Muito obrigado a @SakuraKinomoto (por favor, vote na resposta dele se achar útil).