Warum kann ich mich nach dem Festlegen des Root-Passworts immer noch ohne Passwort bei MYSQL anmelden?


10

Warum kann ich mich nach dem Festlegen des Root-Passworts immer noch ohne Passwort über die Befehlszeile anmelden? Ich kann "mysql" an einer Root-Unix-Eingabeaufforderung eingeben und es fragt nach keinem Passwort und erlaubt mir trotzdem Root-Zugriff. Ich verstehe nicht, warum "mysql -u root" mich nicht JETZT nach dem Passwort fragt, das ich für das Konto festgelegt habe.

Außerdem kann ich mich nicht von einem Remotecomputer aus als "root" bei mysql anmelden. Habe ich es unten nicht richtig konfiguriert? Ich erhalte die Fehlermeldung: "Host ... darf keine Verbindung zu diesem MySQL-Server herstellen. Habe ich ihn nicht für '%' konfiguriert?

Hier ist meine Benutzertabelle:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

Antworten:


4

Es sieht so aus, als ob das Passwort für den 'root'@'localhost'Benutzereintrag festgelegt wurde, jedoch nicht für den 'root'@'%'Eintrag. Auf dieser Grundlage wäre eine kennwortfreie Authentifizierung zulässig.

Überlegen Sie aus Sicherheitsgründen, ob Sie den Root-Zugriff von überall aus zulassen möchten. Wenn Sie es brauchen, entfernen Sie einfach die localhost-Spezifikationen:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

Und legen Sie das Passwort für den 'root'@'%'Benutzer fest:

set password for 'root'@'%' = password('passwordhere');

Das war ALLES, was ich brauchte und noch mehr. Vielen Dank. Ich war mir nicht sicher, was sicher zu entfernen oder nicht sicher war, und Sie haben meine Frage beantwortet. Gute Antwort. :-)
Djangofan

4

Nun, die Antwort ist richtig in dieser Tabelle - Sie müssen die "root" -Zeilen entfernen, in denen kein Passwort aufgeführt ist.

Es sieht auch so aus, als ob Sie Verbindungen von überall (?!?!) Zulassen, wenn Sie keinen Benutzer oder Pass verwenden. Wahrscheinlich eine schlechte Idee. Ich würde so etwas tun wie:

mysql> use mysql;
mysql> delete from user where password = "";

2

Vergessen Sie nicht, PRIVILEGES ZU SPÜLEN, sonst können Sie sich immer noch ohne Passwort anmelden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.