Heim > Datenbank > MySQL-Tutorial > Warum behandelt MySQL „localhost' und „127.0.0.1' bei der Gewährung von Berechtigungen unterschiedlich?

Warum behandelt MySQL „localhost' und „127.0.0.1' bei der Gewährung von Berechtigungen unterschiedlich?

Patricia Arquette
Freigeben: 2024-11-23 11:38:33
Original
785 Leute haben es durchsucht

Why Does MySQL Treat `localhost` and `127.0.0.1` Differently When Granting Privileges?

Localhost vs. 127.0.0.1: Der seltsame Fall von MySQL-Berechtigungen

Bei der Arbeit mit MySQL stößt man häufig auf scheinbar verwirrende Unterschiede zwischen den Begriffen „localhost“ und „127.0.0.1“. Dieser Unterschied zeigt sich im Zusammenhang mit der Gewährung von Berechtigungen an Benutzer innerhalb des Datenbanksystems.

Betrachten Sie zur Veranschaulichung das folgende Beispiel:

$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host;
+-----------------------------+
| Tables_in_created_from_host |
+-----------------------------+
| test                        |
+-----------------------------+

$ mysql -u root -h localhost -e 'show tables' created_from_host;
ERROR 1049 (42000): Unknown database 'created_from_host'
Nach dem Login kopieren

Diese Diskrepanz entsteht, weil MySQL zwischen Verbindungen unterscheidet, die über a hergestellt werden Hostname (z. B. „localhost“) und über einen Socket hergestellte Verbindungen (z. B. „127.0.0.1“). Die Socket-Methode, die verwendet wird, wenn kein Hostname angegeben ist oder wenn eine Verbindung mit „localhost“ hergestellt wird, verwendet einen lokalen Socket für die Kommunikation mit dem Datenbankserver.

Diese Unterscheidung wird im Bereich der Benutzerrechte von Bedeutung. Hier ist eine einfache Anleitung zum Gewähren ALLER Berechtigungen für ALLE Datenbanken von ALLEN Hosts für „root“:

  1. Stellen Sie mit dem Root-Konto eine Verbindung zu MySQL her:

    $ mysql -u root -p
    Nach dem Login kopieren
  2. Führen Sie den folgenden Befehl aus, um die zu gewähren Berechtigungen:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    Nach dem Login kopieren
  3. Löschen Sie die Berechtigungen, um sicherzustellen, dass die Änderungen wirksam werden:

    FLUSH PRIVILEGES;
    Nach dem Login kopieren

Durch Befolgen dieser Schritte können Sie sicherstellen dass „root“ von jedem Host aus uneingeschränkten Zugriff auf Ihr Datenbanksystem hat, unabhängig davon, ob dieser über „localhost“ oder verbunden ist '127.0.0.1'.

Das obige ist der detaillierte Inhalt vonWarum behandelt MySQL „localhost' und „127.0.0.1' bei der Gewährung von Berechtigungen unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage