如何在 PHP 中将 MYSQL_CLIENT_SSL 设置与 mysql_connect() 一起使用?
Posted
技术标签:
【中文标题】如何在 PHP 中将 MYSQL_CLIENT_SSL 设置与 mysql_connect() 一起使用?【英文标题】:How to use the MYSQL_CLIENT_SSL setting with mysql_connect() in PHP? 【发布时间】:2012-02-26 17:01:45 【问题描述】:我有一个我正在尝试连接的 mysql 数据库的 CA 证书(它在 Amazon rds 上)。我找不到一个很好的例子来说明如何使用 php 的 mysql_connect() 函数连接到 mysql 数据库,并使用该 ca 证书(存储在 /home/username/mysql_ca_cert.pem)进行连接。
谁能帮我举个简单的例子?
【问题讨论】:
我建议不要使用 mysql_* 函数,改用 mysqli 或 PDO。 @GordonM,mysql_* 函数有什么问题? 它们已经过时了,它们没有被更新以利用 mysql 5 提供的功能,除了名称之外,它们都已被弃用。 @GordonM,感谢您的建议。不幸的是,我有一些使用 mysql_connect 的遗留代码我必须维护,所以如果有人有答案,我仍然对这个问题感兴趣。 @JeffPigarelli,如果我能使用 PDO 就好了.....不幸的是,在这种情况下我不能 【参考方案1】:这将使用服务器 ssl 证书连接,2048 是关键
$link=mysql_connect(host, user, password,true,2048);
【讨论】:
@Mark Allen,我如何将它与位于 /home/username/mysql_ca_cert.pem 的 ssl 证书文件连接起来? 看看最后一条消息。 ***.com/questions/1778977/…【参考方案2】:mysql_connect() 已被折旧且高度可破解。 使用它是最愚蠢的
<?php
$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);
echo htmlentities($row['_message']);
?>
http://www.php.net/manual/en/book.pdo.php
【讨论】:
【参考方案3】:$db = mysqlii_init();
$db->ssl_set('server-key.pem','server-cert.pem', 'cacert.pem', NULL, NULL);
$db->real_connect('localhost','root','','mydb');
当然之后
$db->close();
希望有帮助:)
【讨论】:
【参考方案4】:你或许可以试试 mysqli::ssl_set
http://www.php.net/manual/en/mysqli.ssl-set.php
【讨论】:
我需要使用mysql_connect()函数。这是遗留代码。以上是关于如何在 PHP 中将 MYSQL_CLIENT_SSL 设置与 mysql_connect() 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章