Gemäß der MySQL-Dokumentation können Sie einen MySQL-Server durch Hinzufügen von Kennwörtern oder Entfernen der anonymen Konten sichern.
Wenn Sie verhindern möchten, dass Clients als anonyme Benutzer ohne Kennwort eine Verbindung herstellen, sollten Sie entweder jedem anonymen Konto ein Kennwort zuweisen oder die Konten entfernen.
Vor dem Aushärten sah meine Benutzertabelle so aus.
mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root | gitlab | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | gitlab | |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+
Ich habe alle anonymen Konten entfernt, sodass die Benutzertabelle jetzt so aussieht. (Ich verwende Puppet, um die Benutzer zu verwalten, aber Puppet führt effektiv einen DROP USER
Befehl aus.)
mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+
Warum kann ich mich immer noch ohne Benutzernamen oder Passwort bei meinem Testsystem anmelden?
Was muss ich tun, um zu verhindern, dass sich unerwünschte Benutzer anmelden?
root@gitlab:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql>
Update : Ich habe auch gerade festgestellt, dass ich mich als root anmelden kann, ohne ein Passwort einzugeben.
Update2 : Ich habe diese Frage gefunden , die einige gute Informationen enthält, das Problem jedoch nicht löst.
Es gibt keine anonymen Benutzer.
mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)
Ich melde mich an als root@localhost
.
mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
Ich habe kein Standardkennwort oder keine in my.cnf definierten Skip-Grant-Tabellen
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0
Update3 :
Ich habe versucht, diese Schritte mit Puppet auszuführen (die automatisch Flush-Berechtigungen ausführen sollten). Ich habe auch manuell Berechtigungen gelöscht und auch versucht, MySQL neu zu starten.
Update4 :
Ich habe auch versucht, das MySQL-Root-Passwort zu ändern und die Berechtigungen zu löschen . Kein Glück, ich kann mich trotzdem als beliebiger Benutzer ohne Passwort anmelden.
Antworten:
Ich habe es herausgefunden. Während in /etc/mysql/my.cnf kein Kennwortschlüsselpaar gespeichert war, wurde in /root/.my.cnf ein Kennwort gespeichert.
Sobald ich das Passwort in /root/.my.cnf auskommentiert hatte, durfte ich mich nicht ohne Passwort anmelden (was ich erwartet hatte).
quelle