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).