sql >> Database >  >> RDS >> Mysql

Hoe MySQL root-aanmeldingen uitschakelen als er geen wachtwoord is opgegeven?

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



  1. Probleem met Ruby on Rails-installatie - Hoe gebruik ik de WAMP MySQL-installatie?

  2. Hoe gegevens terug te krijgen van Mysql voor dagen zonder statistieken?

  3. Maak een lijst van de query's die op SQL Server worden uitgevoerd

  4. Mogelijk om PHP MYSQL-query lege variabele in WHERE-clausule te laten negeren?