从 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 中通过 SSL 安全连接到远程 MySQL 服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!