Användare som stöter på detta beteende i nyare versioner av MySQL/MariaDB (t.ex. Debian Stretch, etc) bör vara medvetna om att det i tabellen mysql.user finns en kolumn som heter 'plugin'. Om insticksprogrammet 'unix_socket' är aktiverat, kommer root att kunna logga in via kommandoraden utan att behöva ett lösenord. Andra inloggningsmekanismer kommer att inaktiveras.
Så här kontrollerar du om så är fallet:
SELECT host, user, password, plugin FROM mysql.user;
som borde returnera något i stil med detta (med unix_socket aktiverat):
+-----------+------+--------------------------+-------------+
| host | user | password | plugin |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+
För att inaktivera det och kräva att root använder ett lösenord:
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
Obs! Som noterat av @marioivangf (i en kommentar) i nyare versioner av MySQL (t.ex. 5.7.x) kan du behöva ställa in plugin-programmet till 'mysql_native_password' (istället för tomt).
Starta sedan om:
service mysql restart
Problem fixat!:
[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Källa:https://stackoverflow.com/a/44301734/3363571 Stort tack till @SakuraKinomoto (vänligen gå upp och rösta på hans svar om du tycker att detta är användbart).