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.
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>
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:
Verwenden Sie GUI-MySQL-Clients wie Visual Studio Code oder TablePlus, die integrierte SSH-Tunnelunterstützung bieten.
Richten Sie die lokale Portweiterleitung mit dem folgenden Befehl ein:
<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email protected] </code>
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( "127.0.0.1:3307", "dbuser", "passphrase" ); mysql_select_db( "db", $smysql ); ?></code>
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!