Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie deaktiviere ich MySQL-Root-Logins, wenn kein Passwort angegeben wird?

Benutzer, die auf dieses Verhalten in neueren Versionen von MySQL/MariaDB (z. B. Debian Stretch usw.) stoßen, sollten sich darüber im Klaren sein, dass es in der mysql.user-Tabelle eine Spalte mit dem Namen „plugin“ gibt. Wenn das Plug-in „unix_socket“ aktiviert ist, kann sich root über die Befehlszeile anmelden, ohne dass ein Passwort erforderlich ist. Andere Anmeldemechanismen werden deaktiviert.

So überprüfen Sie, ob dies der Fall ist:

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

was so etwas zurückgeben sollte (mit aktiviertem unix_socket):

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

Um dies zu deaktivieren und von root zu verlangen, ein Passwort zu verwenden:

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

Hinweis: Wie von @marioivangf (in einem Kommentar) angemerkt, müssen Sie in neueren Versionen von MySQL (z. B. 5.7.x) das Plugin möglicherweise auf „mysql_native_password“ (anstatt leer) setzen.

Dann neu starten:

service mysql restart

Problem behoben!:

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

Quelle:https://stackoverflow.com/a/44301734/3363571 Ein großes Dankeschön an @SakuraKinomoto (bitte stimmen Sie für seine Antwort ab, wenn Sie dies nützlich finden).