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

SQL-Implementierung von LeetCode (181. Angestellte verdienen mehr als Manager)

[LeetCode] 181.Mitarbeiter verdienen mehr als ihr...

Einführung in HTML DOM_PowerNode Java Academy

Was ist DOM? Mit JavaScript können Sie das gesamt...

Aktivieren und Konfigurieren des MySQL-Protokolls für langsame Abfragen

Einführung Das MySQL-Protokoll für langsame Abfra...

So finden Sie identische Dateien in Linux

Während der Nutzung des Computers entsteht im Sys...

Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen

Hintergrund Die Menge neuer Daten in der Geschäft...

JavaScript implementiert Ziehen mit der Maus, um die Div-Größe anzupassen

In diesem Artikel wird der spezifische JavaScript...

So verwenden Sie den Linux-Befehl seq

1. Befehlseinführung Mit dem Befehl seq (Sequence...

CSS realisiert die Layoutmethode „Fest links“ und „Adaptiv rechts“

1. Schwebendes Layout 1. Lassen Sie zuerst das Di...

Zwei Möglichkeiten, damit IE6 Bilder im PNG-24-Format normal anzeigt

Methode 1: Bitte fügen Sie den folgenden Code nach...

Anwendung schöner Stylesheets bei der Erstellung von XHTML+CSS-Webseiten

Dies ist ein Artikel, der vor langer Zeit geschrie...

jQuery ermöglicht nahtloses Scrollen von Tabellen

In diesem Artikelbeispiel wird der spezifische Co...

Verwendung der JavaScript-Sleep-Funktion

Inhaltsverzeichnis 1. Schlaffunktion 2. setTimeou...