Comment se connecter à un serveur MySQL via SSH en PHP : dépannage et meilleures pratiques

Mary-Kate Olsen
Libérer: 2024-10-21 22:30:30
original
615 Les gens l'ont consulté

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

Connectez-vous à un serveur MySQL via SSH en PHP

Présentation

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.

Résolution des erreurs

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>
Copier après la connexion

Redirection de port sécurisée

La solution recommandée pour se connecter à un serveur MySQL via SSH consiste à établir un tunnel SSH. Voici deux options pour configurer le tunnel :

Outils GUI

Utilisez des clients GUI MySQL comme Visual Studio Code ou TablePlus qui offrent une prise en charge intégrée du tunneling SSH.

Commande Ligne

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&#160;protected] </code>
Copier après la connexion

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( &quot;127.0.0.1:3307&quot;, &quot;dbuser&quot;, &quot;passphrase&quot; );
      mysql_select_db( &quot;db&quot;, $smysql ); 
?></code>
Copier après la connexion

Considérations de sécurité

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!