mysqli over ssl给2003

时间:2017-09-17 16:44:45

标签: php mysql ssl mysqli

我在ssl上使用mysqli连接, 所以在下面的代码中使用:

$mdbconnection = mysqli_init();
$mdbconnection->ssl_set('/ssl/xyz.pem', '/ssl/abc-cert.pem', NULL, NULL, 'AES256-SHA');    
$mdbconnection->real_connect(SV_SERVER, SV_MYSQL_LOGIN, SV_MYSQL_PASSWORD, SV_MYSQL_DATABASE);

我注意到我无法一直连接mysql服务器。 如果尝试100次失败3次。

并收到以下错误

echo($mdbconnection->connect_errno);

打印:

  

2003

如果我在失败后第二次尝试{echo($mdbconnection->connect_errno);}将始终1045

我正在努力解决这个问题 任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

2003错误代码表示无法建立连接: https://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html

错误代码1045表示客户端已连接但服务器拒绝了凭据(访问被拒绝): https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

我会说,如果你在每100次尝试中获得2003次错误代码几次,那么听起来有些可能性是:

  1. 某些中间应用程序或硬件可能会将您的尝试视为可能的泛洪攻击(DDoS),可能会拦截并阻止连接(如果您真的很快连接100次)

    < / LI>
  2. 您可能在客户端遇到一些网络稳定性问题。可能值得花时间运行Wireshark并重现运行它的问题,以便捕获问题并查看它是否显示任何重要信息(例如DNS故障)。

  3. MySQL服务器可能崩溃然后重新启动。检查服务器端MySQL错误日志(https://dev.mysql.com/doc/refman/5.7/en/error-log.html)。实际上,只要你在MySQL中有奇怪的行为,你就应该真正做到这一点。

  4. 如果MySQL服务器日志没有显示任何内容,请检查您的系统日志,特别是如果您正在记录阻塞防火墙(iptables或您正在使用的任何f / w)数据包之类的内容并搜索它们客户IP在问题发生时。

  5. 最后,如果您可以轻松/快速地重现(例如,通过脚本建立100个连接并看到它失败),请尝试将SSL排除在等式之外,并在没有SSL的情况下进行连接,看看它是否会给您带来同样的问题。如果它在没有SSL的情况下完美运行,可能是在编译MySQL包期间使用的SSL库存在问题。

    您可能还想查看是否有任何负载均衡可能会使您的脚本连接到MySQL服务器的不同实例(这不太可能,但可以解释您看到的症状,如果一个服务器已关闭,而下一个服务器没有您提供的凭据)