如何在 PHP 中通过 SSL 安全连接到远程 MySQL 服务器?

DDD
发布: 2024-11-23 22:48:10
原创
718 人浏览过

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

从 PHP 通过 SSL 连接到远程 MySQL 服务器

尝试使用旧 MySQL 通过 SSL 与远程 MySQL 服务器建立连接时扩展名 (mysql_connect) 时,用户可能会遇到指示“SSL 连接错误”的错误。尽管在 my.cnf 中配置了适当的 SSL 参数以启用安全终端连接,PHP 连接仍然不成功。

PHP 版本注意事项

提供的代码使用过时的 MySQL 扩展,不再积极开发。相反,建议使用 MySQLi 扩展(MySQL Improved Extension),它提供了增强的功能集,包括:

  • 面向对象的接口
  • 对准备好的语句和多个语句的支持
  • 改进了调试功能

改进了与MySQLi

以下示例代码展示了如何使用 MySQLi 进行安全 SSL 连接:

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);
登录后复制

PDO_MYSQL 替代

虽然不是由于较旧的 PHP 版本中的 SSL 支持有限,因此非常理想,PDO_MYSQL 可用于 SSL连接:

$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);
登录后复制

需要注意的是,5.3.8 之前的 PHP 版本的 PDO 中的 SSL 支持可能无法按预期运行。

如果您遇到其他问题,请咨询以下资源可获取更多指导:

  • [PHP MySQLi SSL 连接示例](https://www.digitalocean.com/community/tutorials/how-to-use-ssl-to-secure-mysql-connections-in-php)
  • [PDO MySQL SSL 配置]( https://stackoverflow.com/questions/30075513/pdo-ssl-connection-fails)

以上是如何在 PHP 中通过 SSL 安全连接到远程 MySQL 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板