So stellen Sie in PHP über SSH eine Verbindung zu einem MySQL-Server her: Fehlerbehebung und Best Practices

Mary-Kate Olsen
Freigeben: 2024-10-21 22:30:30
Original
718 Leute haben es durchsucht

How to Connect to a MySQL Server Over SSH in PHP: Troubleshooting and Best Practices

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

Übersicht

Um eine Verbindung zu einem Remote-MySQL-Server über SSH herzustellen, muss ein sicherer Tunnel zwischen Ihrem lokalen Server eingerichtet werden Maschine und dem MySQL-Datenbankserver. In dieser Anleitung werden die Schritte beschrieben, die zum Einrichten des SSH-Tunnels und zum Herstellen einer Verbindung zur Datenbank mithilfe von PHP erforderlich sind.

Fehlerbehebung

Der Fehler „mysqli_connect() erwartet, dass Parameter 6 eine Zeichenfolge ist, Ressource angegeben“ Tritt auf, wenn der sechste Parameter von mysqli_connect() keine Zeichenfolge ist, die den MySQL-Tunnel darstellt. Um dieses Problem zu beheben, ändern Sie den sechsten Parameter so, dass er die Ausgabe der Funktion ssh2_tunnel ist, wie unten gezeigt:

<code class="php">$connection = ssh2_connect('SERVER IP', 22);

ssh2_auth_password($connection, 'username', 'password');

$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);

$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 
                         'dbname', 3307, stream_get_contents($tunnel))
    or die ('Fail: '.mysql_error());</code>
Nach dem Login kopieren

Sichere Portweiterleitung

Die empfohlene Lösung für die Verbindung zu einem MySQL-Server SSH dient zum Aufbau eines SSH-Tunnels. Hier sind zwei Optionen zum Einrichten des Tunnels:

GUI-Tools

Verwenden Sie GUI-MySQL-Clients wie Visual Studio Code oder TablePlus, die integrierte SSH-Tunnelunterstützung bieten.

Befehl Linie

Richten Sie die lokale Portweiterleitung mit dem folgenden Befehl ein:

<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email&#160;protected] </code>
Nach dem Login kopieren

Sobald der Tunnel eingerichtet ist, stellen Sie über den lokalen Port (3307) in Ihrem PHP-Skript eine Verbindung zum MySQL-Server her:

<code class="php"><?php
      $smysql = mysql_connect( &quot;127.0.0.1:3307&quot;, &quot;dbuser&quot;, &quot;passphrase&quot; );
      mysql_select_db( &quot;db&quot;, $smysql ); 
?></code>
Nach dem Login kopieren

Sicherheitsüberlegungen

Es ist wichtig, den Tunnel über einen Jumpbox-Server einzurichten, um zu verhindern, dass Ihr Datenbankserver direkt dem Internet ausgesetzt wird. Erwägen Sie außerdem die Verwendung einer SSH-Schlüsselauthentifizierung anstelle einer Kennwortauthentifizierung, um die Sicherheit zu erhöhen.

Das obige ist der detaillierte Inhalt vonSo stellen Sie in PHP über SSH eine Verbindung zu einem MySQL-Server her: Fehlerbehebung und Best Practices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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