sql >> Database teknologi >  >> RDS >> Mysql

Hvordan deaktiverer man MySQL root logins, når der ikke er angivet en adgangskode?

Brugere, der støder på denne adfærd i nyere versioner af MySQL/MariaDB (f.eks. Debian Stretch osv.), bør være opmærksomme på, at der i tabellen mysql.user er en kolonne kaldet 'plugin'. Hvis 'unix_socket'-plugin'et er aktiveret, vil root være i stand til at logge på via kommandolinjen uden at kræve en adgangskode. Andre login-mekanismer vil blive deaktiveret.

For at kontrollere, om det er tilfældet:

SELECT host, user, password, plugin FROM mysql.user;
 

som skulle returnere noget som dette (med unix_socket aktiveret):

+-----------+------+--------------------------+-------------+ | host | user | password | plugin | +-----------+------+--------------------------+-------------+ | localhost | root | <redacted_password_hash> | unix_socket | +-----------+------+--------------------------+-------------+

For at deaktivere det og kræve, at root bruger en adgangskode:

UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
 

Bemærk: Som bemærket af @marioivangf (i en kommentar) i nyere versioner af MySQL (f.eks. 5.7.x) skal du muligvis indstille pluginnet til 'mysql_native_password' (i stedet for tomt).

Genstart derefter:

service mysql restart
 

Problem løst!:

[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
 

Kilde:https://stackoverflow.com/a/44301734/3363571 Stor tak til @SakuraKinomoto (gå venligst op og stem på hans svar, hvis du finder dette nyttigt).



  1. Hvad betyder det at opdele en Microsoft Access-database?

  2. Sådan implementeres PostgreSQL på DigitalOcean

  3. vise data fra SQL-database til php/html-tabel

  4. Hvad er den nøjagtige placering af MySQL-databasetabeller i XAMPP-mappen?