Maison  >  Article  >  base de données  >  Comment se connecter en toute sécurité à un serveur MySQL distant via SSL en PHP ?

Comment se connecter en toute sécurité à un serveur MySQL distant via SSL en PHP ?

DDD
DDDoriginal
2024-11-23 22:48:10723parcourir

How to Securely Connect to a Remote MySQL Server via SSL in PHP?

Connexion à un serveur MySQL distant avec SSL à partir de PHP

Lors de la tentative d'établissement d'une connexion à un serveur MySQL distant avec SSL à l'aide de l'ancien MySQL (mysql_connect), les utilisateurs peuvent rencontrer une erreur indiquant « Erreur de connexion SSL ». Malgré la configuration des paramètres SSL appropriés dans my.cnf pour activer les connexions sécurisées au terminal, la connexion PHP reste infructueuse.

Considérations sur la version PHP

Le code fourni utilise l'extension MySQL obsolète. , qui n'est plus activement développé. Au lieu de cela, il est recommandé d'utiliser l'extension MySQLi (MySQL Improvementd Extension) qui offre un ensemble de fonctionnalités améliorées, notamment :

  • Interface orientée objet
  • Prise en charge des instructions préparées et multiples
  • Capacités de débogage améliorées

Connectivité améliorée avec MySQLi

L'exemple de code suivant montre comment utiliser MySQLi pour une connexion SSL sécurisée :

ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL);
$link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);

Alternative PDO_MYSQL

Bien que non idéal en raison de la prise en charge limitée de SSL dans les anciennes versions de PHP, PDO_MYSQL peut être utilisé pour SSL connexions :

$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
));

$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);

Il est important de noter que le support SSL dans PDO pour les versions PHP antérieures à 5.3.8 peut ne pas fonctionner comme prévu.

Si vous rencontrez d'autres problèmes, veuillez consulter le ressources suivantes pour des conseils supplémentaires :

  • [Connexion SSL PHP MySQLi Exemple](https://www.digitalocean.com/community/tutorials/how-to-use-ssl-to-secure-mysql-connections-in-php)
  • [Configuration SSL PDO MySQL]( https://stackoverflow.com/questions/30075513/pdo-ssl-connection-fails)

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!

Déclaration:
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