Welche MySQL-Benutzer werden benötigt?

13

Mein MySQL-Server hat eine Reihe seltsamer Benutzer, die ich nicht hinzugefügt habe. Sind das alles nötig?

'root'@'127.0.0.1'
'root'@'localhost'
'root'@'SERVERNAME'
'root'@'::1'
''@'SERVERNAME'
''@'LOCALHOST'

Wenn ich alle Roots mit Ausnahme von root @ localhost entferne, kann ich mich dann selbst aus der Datenbank ausschließen? Und wozu dienen die leeren Benutzernamen? Sie scheinen nur die "GRANT USAGE" zu haben?

Gibt es einen Unterschied zwischen 127.0.0.1 als Host und localhost? Wenn ich nur localhost und nicht 127.0.0.1 habe, bedeutet das, dass mysqlclient, die TCP / IP anstelle von Unix-Sockets verwenden, keine Verbindung herstellen können?

Myforwik
quelle

Antworten:

16
  1. Diese Benutzer scheinen die Standardbenutzer zu sein , die bei der Installation von MySQL hinzugefügt wurden. Es wird empfohlen, dass Sie mysql_secure_installation nach der Installation von MySQL ausführen .

  2. Die leeren Benutzernamen ('' @ 'SERVERNAME') stehen für anonyme Benutzer. Wenn Sie mysql_secure_installationdas Kennwort nicht ausgeführt oder festgelegt haben, kann jeder Zugriff erhalten. Wenn der anonyme Benutzer über GRANT USAGEBerechtigungen verfügt , bedeutet dies im Grunde, dass er keine Berechtigungen hat, es ist jedoch dennoch eine gute Idee, die anonyme Anmeldung vollständig zu entfernen.

  3. Nein, es gibt keinen großen Unterschied zwischen localhost und 127.0.0.1. Die IP-Adresse, von der aus sich der Benutzer anmelden möchte, muss mit dem @[IP Address]Teil des Benutzernamens übereinstimmen . Wenn Sie sich von demselben Computer aus anmelden, ist der MySQL-Server eingeschaltet @localhostund @127.0.0.1würde übereinstimmen. Wie IVlint67 hervorhob, ist es in einigen Installationen @localhostbesser , wenn sie nicht funktionieren @127.0.0.1.

ub3rst4r
quelle
13

Ich installiere normalerweise mit dem mysql_secure_installations-Skript, mit dem MySQL jetzt ausgeliefert wird ...


[email protected] ist die @ IP-Adresse. root @ localhost ist @ hostname. Das Gleiche gilt für den Servernamen. Und der letzte Stamm ist die @ IPv6-Adresse für localhost.


Von der MySQL-Site:

Der Versuch, eine Verbindung zum Host 127.0.0.1 herzustellen, wird normalerweise in das Konto localhost aufgelöst. Dies schlägt jedoch fehl, wenn der Server mit der Option --skip-name-resolve ausgeführt wird. In diesem Fall ist das Konto 127.0.0.1 hilfreich.

Die leeren Benutzernamen:

Einige Konten sind für anonyme Benutzer. Diese haben einen leeren Benutzernamen. Die anonymen Konten haben kein Kennwort, sodass jeder mit ihnen eine Verbindung zum MySQL-Server herstellen kann

http://dev.mysql.com/doc/refman/5.0/de/default-privileges.html


Und schlussendlich:

Wenn ich alle Roots mit Ausnahme von root @ localhost entferne, kann ich mich dann selbst aus der Datenbank ausschließen?

Ja, aber Sie können wieder einsteigen

Siehe --skip-grant-tables: https://help.ubuntu.com/community/MysqlPasswordReset

Sollte ich?

Es ist mir egal, es ist dein Server. Wenn es meins wäre, würde ich die Root-Konten wie sie sind mit Passwörtern sichern und die anonymen Konten löschen, sofern Sie sie nicht benötigen.

Daniel Widrick
quelle