【发布时间】:2017-12-02 19:52:17
【问题描述】:
我正在尝试使用 php 和 ssl 连接到(远程)AWS MYSQL 数据库。
我创建了一个数据库用户,可以从 php 和控制台连接它。
然后我在数据库中修改了用户使用 SSL 和 "require ssl"。
我仍然可以通过以下方式连接控制台: mysql -h 主机 -u 用户名 -p --ssl
但是在 php 中我得到一个 ERROR 2002。
$con=mysqli_init();
mysqli_ssl_set($con,NULL,NULL,"cacert.pem",NULL,NULL);
$link = mysqli_real_connect($con, "host", "username", "password");
据我所知,ssl_set 参数与 AWS 数据库无关。 How to connect to Amazon RDS via SSL?
我认为它与 mysqli_ssl_set 方法有关,如果没有它,则建立连接并且数据库拒绝访问,这是正确的行为。这可能是客户端的一些配置错误,但我不知道我应该检查什么。
错误是由 mysqli_real_connect 触发的,因为 mysqli_ssl_set 总是返回 true,在它尝试连接之后会收到错误。
【问题讨论】:
-
收到2002 错误有点奇怪。
-
奇怪的是,与 2002 错误相关的消息是 无法通过套接字 '%s' (%d) 连接到本地 MySQL 服务器。也许获取完整的消息(特别是
%s和%d设置的内容)可能会有所帮助。 -
当你使用
mysqli_error得到最后一个错误时呢? -
证书权限正常吗?如果您通过命令行调用 PHP 代码,它会起作用吗?
-
在 linux 下的 apache 我会先做
chown www-data:www-data /path/to/cacert.pem然后chmod 644 /path/to/cacert.pem(不确定第二个,也许应该是400代替)。
标签: php mysql amazon-web-services ssl connection