Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich ein Problem mit dem Parameter „mysqli_connect()' beim Herstellen einer Verbindung zu MySQL über SSH mit PHP?

Wie behebe ich ein Problem mit dem Parameter „mysqli_connect()' beim Herstellen einer Verbindung zu MySQL über SSH mit PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 22:30:02730Durchsuche

How to Fix mysqli_connect() Parameter Issue When Connecting to MySQL over SSH with PHP?

Herstellen einer Verbindung zu einem MySQL-Server über SSH in PHP

Das Herstellen einer Verbindung zu einer MySQL-Datenbank, die auf einem Remote-Linux-Computer gehostet wird, über SSH mithilfe von PHP-Funktionen kann eine Herausforderung sein. Der Fehler „mysqli_connect() erwartet, dass Parameter 6 eine Zeichenfolge ist, Ressource angegeben“ kann auftreten, wenn der bereitgestellte Code verwendet wird.

Verstehen des Problems

Der Code versucht, die Funktion mysqli_connect() zu verwenden Stellen Sie über einen SSH-Tunnel eine Verbindung zur Datenbank her. Allerdings erwartet die Funktion mysqli_connect() einen String als sechsten Parameter (der den Tunnel angibt), wohingegen die Funktion ssh2_tunnel() eine Ressource zurückgibt.

Lösung des Problems mit dem SSH-Tunnel

Zu lösen Um dieses Problem zu lösen, richten Sie einen SSH-Tunnel zu Ihrem MySQL-Datenbankserver ein. Eine effektive Methode ist die Verwendung eines Jumpbox-Proxys für Sicherheitsverbesserungen. Bei diesem Ansatz wird mithilfe des SSH-Clients ein lokaler Portweiterleitungstunnel erstellt, wodurch effektiv ein sicherer Kanal zwischen Ihrem lokalen Computer und dem Datenbankserver erstellt wird.

Schritt-für-Schritt-Anleitung

Verwendung Befehlszeilentools (SSH-Tunnel-Setup):

  1. Führen Sie von Ihrem lokalen Terminal aus den folgenden SSH-Befehl aus:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • Ersetzen Sie „3307 ' durch Ihre bevorzugte lokale Portnummer.
  • Ersetzen Sie „10.3.1.55:3306“ durch die IP-Adresse und den Port Ihres MySQL-Datenbankservers.
  • Ersetzen Sie „[email protected]“ durch Ihre Jumpbox Anmeldeinformationen.

Herstellen einer Verbindung zur Datenbank:

  1. Stellen Sie in Ihrem PHP-Skript die Datenbankverbindung mit mysqli_connect() her:
<code class="php">$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");</code>
  • Verwenden Sie die lokale Portnummer (in diesem Beispiel 3307), die im SSH-Tunnel-Setup angegeben ist.

Zusätzliche Überlegungen:

  • Die Verwendung eines GUI-MySQL-Clients mit SSH-Tunneling-Unterstützung (z. B. Visual Studio Code) kann den Einrichtungsprozess vereinfachen.
  • Die Authentifizierung mit privaten Schlüsseln kann die Sicherheit erhöhen. Verwenden Sie den Schalter „-i“ im SSH-Befehl, um den Pfad Ihres privaten Schlüssels anzugeben.
  • Tunneln Sie den Datenverkehr durch eine Jumpbox/Bastion Host, um Schwachstellen beim direkten Datenbankzugriff zu verringern.

Das obige ist der detaillierte Inhalt vonWie behebe ich ein Problem mit dem Parameter „mysqli_connect()' beim Herstellen einer Verbindung zu MySQL über SSH mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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