Gebruikers die dit gedrag tegenkomen in nieuwere versies van MySQL/MariaDB (bijv. Debian Stretch, enz.) dienen zich ervan bewust te zijn dat er in de tabel mysql.user een kolom is met de naam 'plugin'. Als de 'unix_socket'-plug-in is ingeschakeld, kan root inloggen via de opdrachtregel zonder dat er een wachtwoord nodig is. Andere inlogmechanismen worden uitgeschakeld.
Om te controleren of dat het geval is:
SELECT host, user, password, plugin FROM mysql.user;
die zoiets als dit zou moeten retourneren (met unix_socket ingeschakeld):
+-----------+------+--------------------------+-------------+
| host | user | password | plugin |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+
Om dat uit te schakelen en root te vereisen om een wachtwoord te gebruiken:
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
Opmerking: Zoals opgemerkt door @marioivangf (in een opmerking) in nieuwere versies van MySQL (bijv. 5.7.x), moet u de plug-in mogelijk instellen op 'mysql_native_password' (in plaats van leeg).
Herstart dan:
service mysql restart
Probleem opgelost!:
[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Bron:https://stackoverflow.com/a/44301734/3363571 Grote dank aan @SakuraKinomoto (ga alsjeblieft naar zijn antwoord als je dit nuttig vindt).