Потребителите, които се сблъскват с това поведение в по-нови версии на MySQL/MariaDB (например Debian Stretch и т.н.), трябва да са наясно, че в таблицата mysql.user има колона, наречена 'plugin'. Ако плъгинът 'unix_socket' е активиран, тогава root ще може да влезе чрез командния ред, без да изисква парола. Други механизми за влизане ще бъдат деактивирани.
За да проверите дали това е така:
SELECT host, user, password, plugin FROM mysql.user;
който трябва да върне нещо подобно (с активиран unix_socket):
+-----------+------+--------------------------+-------------+
| host | user | password | plugin |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+
За да деактивирате това и да изисквате root, за да използвате парола:
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
Забележка: Както е отбелязано от @marioivangf (в коментар) в по-нови версии на MySQL (напр. 5.7.x), може да се наложи да настроите приставката на „mysql_native_password“ (вместо празна).
След това рестартирайте:
service mysql restart
Проблемът е отстранен!:
[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Източник:https://stackoverflow.com/a/44301734/3363571 Големи благодарности на @SakuraKinomoto (моля, гласувайте нагоре, гласувайте за неговия отговор, ако намирате това за полезно).