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

Come disabilitare gli accessi root MySQL quando non viene fornita alcuna password?

Gli utenti che riscontrano questo comportamento nelle versioni più recenti di MySQL/MariaDB (ad es. Debian Stretch, ecc.) dovrebbero essere consapevoli del fatto che nella tabella mysql.user è presente una colonna chiamata 'plugin'. Se il plugin 'unix_socket' è abilitato, root sarà in grado di accedere tramite riga di comando senza richiedere una password. Altri meccanismi di accesso verranno disabilitati.

Per verificare se è così:

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

che dovrebbe restituire qualcosa del genere (con unix_socket abilitato):

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

Per disabilitarlo e richiedere a root di utilizzare una password:

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

Nota: Come notato da @marioivangf (in un commento) nelle versioni più recenti di MySQL (ad es. 5.7.x) potrebbe essere necessario impostare il plug-in su 'mysql_native_password' (anziché vuoto).

Quindi riavvia:

service mysql restart

Problema risolto!:

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

Fonte:https://stackoverflow.com/a/44301734/3363571 Grazie mille a @SakuraKinomoto (per favore, vai su vota la sua risposta se lo trovi utile).