Der Unterschied zwischen MySQL-Datenbankhost 127.0.0.1 und localhost

Der Unterschied zwischen MySQL-Datenbankhost 127.0.0.1 und localhost

Viele meiner Freunde haben möglicherweise ein Problem und wissen nicht, was der Unterschied zwischen 127.0.0.1 und localhost ist. Manchmal stellen sie jedoch fest, dass sie sich nicht über localhost verbinden können, aber sie können sich verbinden, indem sie zu 127.0.0.1 wechseln. Was ist also der Unterschied zwischen ihnen? Lassen Sie mich sie Ihnen vorstellen.

  1. Wenn Sie mysql -h 127.0.0.1 verwenden, verwenden Sie TCP/IP für die Verbindung. Der MySQL-Server denkt, dass die Verbindung von 127.0.0.1 oder „localhost.localdomain“ kommt.
  2. Wenn Sie mysql -h localhost verwenden, wird keine TCP/IP-Verbindung verwendet, sondern ein Unix-Socket. Zu diesem Zeitpunkt denkt der MySQL-Server, dass der Client von „localhost“ ist.
  3. „localhost“ hat in der MySQL-Berechtigungsverwaltung eine bestimmte Bedeutung:

Hinweis: Obwohl die beiden Verbindungsmethoden unterschiedlich sind, sind die von beiden Verbindungsmethoden verwendeten Berechtigungsdatensätze die folgenden 1. Zeilendatensätze, wenn localhost der Standardwert 127.0.0.1 ist (weil der Datensatz zuerst kommt und zuerst abgeglichen wird).

*************************** 1. Reihe *************************** 
Host: localhost 
Benutzer: root 
...... 
*************************** 2. Reihe *************************** 
Gastgeber: 127.0.0.1 
Benutzer: root

beweisen:

shell>mysql -h 127.0.0.1 
mysql> Status; 
Aktueller Benutzer: root@localhost 
SSL: Nicht verwendet 
Aktueller Pager: stdout 
Outfile wird verwendet: '' 
Trennzeichen verwenden: ; 
Serverversion: 5.1.33-log Quellverteilung 
Protokollversion: 10 
Verbindung: 127.0.0.1 über TCP/IP 
Shell> mysql -h locahostmysql> Status; 
Aktueller Benutzer: root@localhost 
SSL: Nicht verwendet 
Aktueller Pager: stdout 
Outfile wird verwendet: '' 
Trennzeichen verwenden: ; 
Serverversion: 5.1.33-log Quellverteilung 
Protokollversion: 10 
Verbindung: Localhost über UNIX-Socket

Finden Sie das Problem

Gestern, als ich meinem Kollegen beim Kompilieren und Installieren der Linux-Umgebung half, stieß ich auf ein Problem:

Der Webserver ist Apache und die Datenbank ist MySQL.

Also habe ich eine PHP-Seite geschrieben, um die Verbindung zur Datenbank zu testen:

$mysql = mysql_connect('localhost','root','');

Öffnen Sie zum Testen http://localhost/test.php

Tipp: Es kann keine Verbindung über Socket zum lokalen MySQL-Server hergestellt werden …

Überprüfen Sie, ob die Umgebung normal ist

Ich dachte, die Datenbank sei nicht gestartet worden, also überprüfte ich den Vorgang und stellte fest, dass MySQL im Vorgang war. Daher startete ich MySQL neu.

Verwenden Sie mysql -u root -p um die MySQL-Betriebsschnittstelle aufzurufen

Verwenden Sie direkt /usr/local/php5/bin/php /web/test.php um die Datenbank auszuführen und eine Verbindung herzustellen

Ich habe Apache neu gestartet, aber es hat nicht funktioniert.

Frage: Warum die Ausführung der Webseite fehlschlug, die Befehlsausführung jedoch erfolgreich war

Das ist sehr frustrierend. Es funktioniert, wenn ich es direkt mit dem PHP-Befehl ausführe, schlägt aber fehl, wenn ich es über die Webseite ausführe. Wird es durch Apache verursacht? Ich habe online viele Informationen gesucht, konnte aber keine Lösung finden. Das Problem besteht nach der Neukompilierung und Installation von Apache weiterhin.

Die Änderung von localhost auf 127.0.0.1 war erfolgreich

Nachdem ich localhost auf 127.0.0.1 geändert hatte, war die Verbindung erfolgreich. Ich geriet in ein Dilemma: Warum scheiterte localhost, aber 127.0.0.1 war erfolgreich?

Die Ping-Localhost-Adresse lautet 127.0.0.1

Hosts öffnen und beitreten

127.0.0.1 qttc

Die Verwendung von qttc als Hostverbindung ist normal, erkennt aber localhost nicht.

Verschiedene Localhost-Verbindungsmethoden führen zu

Um den Unterschied zwischen dem Ausfüllen von localhost und anderen Hosts zu verstehen, wenn PHP eine Verbindung zur Datenbank herstellt, habe ich viele Informationen gelesen und schließlich Folgendes gelernt:

Wenn der Host als localhost eingetragen ist, verwendet MySQL unix domain socket -Verbindung

Wenn der Host als 127.0.0.1 eingetragen ist, verwendet MySQL TCP für die Verbindung

Dies ist eine Funktion des Linux-Socket-Netzwerks. Auf Windows-Plattformen tritt dieses Problem nicht auf.

Problemumgehung

Fügen Sie den Abschnitt [mysql] von my.cnf hinzu

protocol=tcp

Zusammenfassen

Oben ist der vom Herausgeber eingeführte Unterschied zwischen dem MySQL-Datenbankhost 127.0.0.1 und localhost. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Perfekte Lösung für das Problem, dass MySQL keine Verbindung zur Datenbank über localhost herstellen kann
  • Lösung für das Problem, dass MySQL eine Verbindung über den lokalen Host herstellen kann, jedoch keine Verbindung über IP herstellen kann
  • Der Unterschied zwischen mysql_connect localhost und 127.0.0.1 (Erklärung der Netzwerkschicht)
  • So lösen Sie das Problem der erfolglosen Verbindung zu Mysql mit localhost in PHP
  • php mysql localhost, 127.0.0.1 und IP-Unterschied
  • Beinhaltet der %-Wert im neu erstellten MySQL-Benutzer localhost?

<<:  Detaillierte Erläuterung des zeitgesteuerten Protokollschneidens von Nginx

>>:  Fassen Sie die Probleme zusammen, die bei der Verwendung der Vue Element-Benutzeroberfläche auftreten

Artikel empfehlen

So verwenden Sie den regulären Matching-Selektor für CSS-Attributwerte (Tipps)

Es gibt drei Typen von regulären Matching-Selekto...

Beispiele für die Verwendung von HTML-Metadaten

Beispielverwendung Code kopieren Der Code lautet w...

mysql8.0.11 Winx64 Installations- und Konfigurationstutorial

Das Installationstutorial für MySQL 8.0.11 WinX64...

Drei Diskussionen zum Iframe Adaptive Height Code

Beim Erstellen einer B/S-Systemschnittstelle stößt...

Detailliertes Tutorial zur Installation von Centos8 auf VMware

Offizielle Website-Adresse von CentOS https://www...

Welche Eigenschaften sollte eine gute Werbung haben?

Manche Leute sagen, dass Werbung machen wie ein Me...

Vorteile und Prinzipien der MySQL-Replikation im Detail erklärt

Bei der Replikation werden die DDL- und DML-Opera...

Erläuterung des TypeScript-Namespace

Inhaltsverzeichnis 1. Definition und Verwendung 1...

MySQL 5.6.27 Installations-Tutorial unter Linux

In diesem Artikel finden Sie das Installations-Tu...

So implementieren Sie eine Array-Lazy-Evaluation-Bibliothek in JavaScript

Inhaltsverzeichnis Überblick So erreichen Sie es ...