我正在尝试使用mysql_connect从PHP连接到远程MySQL服务器:
$link = mysql_connect(
"ip",
"user",
"pass",
true,
MYSQL_CLIENT_SSL
)
Run Code Online (Sandbox Code Playgroud)
并得到最糟糕的错误:
SSL connection error
Run Code Online (Sandbox Code Playgroud)
我在my.cnf中添加了以下参数:
[client]
ssl-ca =/etc/mysql/ssl/ca-cert.pm
ssl-cert =/etc/mysql/ssl/client-cert.pem
ssl-key =/etc/mysql/ssl/client-key.pem
Run Code Online (Sandbox Code Playgroud)
所以我可以直接从终端成功连接到远程mysql
#mysql -h ip -u user -p
Run Code Online (Sandbox Code Playgroud)
所以连接到mysql服务器确实有效,据我所知,问题是在php/mysql合作中.可能我错过了一些参数.
不幸的是我不能使用mysqli lib,因为pdo_mysql有太多工作适配器.
我的PHP版本是5.3.6-13ubuntu3.6 MySQL版本是5.1.61
我还补充说
mssql.secure_connection = On
Run Code Online (Sandbox Code Playgroud)
到我的php.ini
帮助将不胜感激!
我的意思是非常简单.我想通过安全连接从PHP脚本连接到外部MS SQL数据库.然而,这已经证明是有问题的,到目前为止,研究投入了三个小时,我感到很茫然.
客户端的平台是Ubuntu,这意味着我不能使用SQLSRV.安全连接已经过不同客户端的测试,工作正常.我目前正在使用PDO和DBlib连接到数据库,这也可以正常工作.
我无法找到任何强制安全连接的方法.我尝试了多个其他驱动程序,但无济于事.
我有什么选择?
编辑:我留下了以下FreeTDS日志......
config.c:543: Got a match.
config.c:565: host = 'XXXXXXXXXX'
config.c:595: Found host entry XXXXXXXXXX.
config.c:599: IP addr is XXXXXXXXXX.
config.c:565: port = '1433'
config.c:565: encryption = 'require'
config.c:565: check certificate hostname = 'no'
config.c:629: UNRECOGNIZED option 'check certificate hostname' ... ignoring.
config.c:565: ca file = 'XXXXXXXXXX.pem'
config.c:629: UNRECOGNIZED option 'ca file' ... ignoring.
Run Code Online (Sandbox Code Playgroud) 我已经在一个网络上的一台服务器上成功设置了一个启用SSL的MySQL安装,并且可以使用SSL在不同网络上的另一台服务器上使用Linux命令行mysql客户端连接到它,但每次我尝试连接时(使用PHP 5.3) .3)我一直得到:
警告:mysqli_real_connect():( HY000/2026):第18行/var/www/html/test.php中的SSL连接错误
我的PHP如下,我做错了什么?证书是777(仅在测试时),相同的代码适用于不同用户的未加密连接(SSL设置被注释掉,即mysqli一般可以肯定地连接到数据库)
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
$obj = mysqli_init();
mysqli_options($obj, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
mysqli_ssl_set($obj,
'/mysql-ssl-certs/server-key.pem',
'/mysql-ssl-certs/server-cert.pem',
'/mysql-ssl-certs/ca-cert.pem',
NULL,
NULL);
$link = mysqli_real_connect($obj, 'localhost', 'ssluser', 'some_password', 'test');
if (!$link)
{
die('<br /><br />Connect Error (' . mysqli_connect_errno() . ') '.mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($obj) . "\n";
$obj->close();
?>
Run Code Online (Sandbox Code Playgroud)