如何在 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() 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中将默认日期设置为波斯日期?

如何在php中将页面保存为pdf

如何在javascript中将数组从php返回到ajax响应

如何在php中将0.5转换为50

如何在php中将文件转换为zip

如何在 PHP 中将序数转换为基数?