La connexion à un serveur MySQL distant via SSH nécessite l'établissement d'un tunnel sécurisé entre votre machine et le serveur de base de données MySQL. Ce guide décrit les étapes impliquées dans la configuration du tunnel SSH et la connexion à la base de données à l'aide de PHP.
L'erreur "mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée" se produit lorsque le sixième paramètre de mysqli_connect() n'est pas une chaîne représentant le tunnel MySQL. Pour résoudre ce problème, modifiez le sixième paramètre pour qu'il soit la sortie de la fonction ssh2_tunnel, comme indiqué ci-dessous :
<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>
La solution recommandée pour se connecter à un serveur MySQL via SSH consiste à établir un tunnel SSH. Voici deux options pour configurer le tunnel :
Utilisez des clients GUI MySQL comme Visual Studio Code ou TablePlus qui offrent une prise en charge intégrée du tunneling SSH.
Configurez la redirection de port local à l'aide de la commande suivante :
<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email protected] </code>
Une fois le tunnel établi, connectez-vous au serveur MySQL via le port local (3307) dans votre script PHP :
<code class="php"><?php $smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" ); mysql_select_db( "db", $smysql ); ?></code>
Il est crucial d'établir le tunnel via un serveur jumpbox pour éviter d'exposer votre serveur de base de données directement à Internet. De plus, envisagez d'utiliser l'authentification par clé SSH au lieu de l'authentification par mot de passe pour une sécurité renforcée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!