gpt4 book ai didi

php - 通过 ADODB 库的 MySQL SSL 连接

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:53 27 4
gpt4 key购买 nike

我在远程服务器上托管了一个 MySQL 数据库,它只接受 SSL 连接。当我使用带有 SSL 选项的 Java JDBC 连接到这个数据库时,它工作正常。有一个特殊的 jdbc 字符串用于 JDBC 连接,如下所示“jdbc:mysql://:/?verifyServerCertificate=false&useSSL=true&requireSSL=true”

我需要使用 ADODB 库通过 PHP 使用类似的连接。

我在网上发现很少有关于使用 ADODB mysqli 扩展的引用资料


(引用 http://mbrisby.blogspot.com/2008/06/adodb-php-mysql-ssl.html)

创建 CA 证书后(我们会说它位于/path/to/ca-cert.pem),请确保以下项目位于/etc/my.cnf 或连接的 [client] 节中客户端主机上用户的 ~/.my.cnf:

ssl-ca=/path/to/ca-cert.pem

然后试试下面的 PHP 程序:

//这些是 AdoDB 库的一部分需要'/path/to/adodb-exceptions.inc.php';需要'/path/to/adodb.inc.php';

/** 我从运行中得到了“2048”* printf( "%d\n", MYSQLI_CLIENT_SSL )* 在 PHP 程序中(安装了 mysqli 扩展)*/$dsn = 'mysqli://ssluser:sslpass@dbhost/test?clientflags=2048';

$dbh = NewADOConnection($dsn);

$sql = "显示状态如'ssl_cipher'";$res =& $dbh->执行($sql);print_r( $res->fields );$res->关闭();

$dbh->关闭();



如果我从不同的机器连接到这个 mysql 数据库,我需要证书信息吗?

是否有类似于 PHP 可用的 JDBC 字符串的东西?

如果有人能发布一个工作示例就太好了

谢谢

最佳答案

我没有使用 SSL 连接 MySQL 的经验。 MySQL 驱动程序有 flags (MYSQL_CLIENT_SSL),您可以在连接时使用。

使用AdoDB连接时设置,可以试试我的连接模板:

$options = '';
if ($driver == 'mysql' OR $driver == 'mysqli')
{
if ($params['pconnect'] === TRUE)
{
$options .= '?persist';
}
$flags = MYSQL_CLIENT_COMPRESS;
if ($params['ssl'] === TRUE)
{
$flags = $flags | MYSQL_CLIENT_SSL;
}
$options .= (empty($options)?'?':'&')."clientflags=$flags";
}

$dsn = "{$driver}://{$username}:{$password}@{$hostname}/{$database}{$options}";

$adodb =& ADONewConnection($dsn);

if ($adodb)
{
//set fetch mode
$adodb->SetFetchMode(ADODB_FETCH_BOTH);

//character set
if ($driver == 'mysql' OR $driver == 'mysqli')
{
if (isset($params['char_set']) AND $params['char_set']
AND isset($params['dbcollat']) AND $params['dbcollat'])
{
$charset = $adodb->qstr($params['char_set']);
$collation = $adodb->qstr($params['dbcollat']);
$adodb->Execute("SET NAMES $charset COLLATE $collation");
}
}
if ($debug)
{
@ob_start();
$adodb->debug = TRUE;
}
}

关于php - 通过 ADODB 库的 MySQL SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com