我试图访问第三方数据库,并出现以下错误:
警告: mysql_pconnect():mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。
但是,我可以使用以下命令通过命令提示符访问数据库:
mysql -uTheUseerNAme -pThePassword DbName -h HostName --skip-secure-auth注意:在上面的命令中,我使用--skip-secure-auth访问数据库。但是现在我的问题是,我们可以在php中做同样的事情,同时在config.php文件中连接数据库吗?
发布于 2017-05-31 16:06:14
对于较新版本的PHP (5.6)和mysqli驱动程序,连接到MySQL服务器的默认方法是使用安全授权(TLS)。看起来,当使用旧的MySQL服务器时,这将失败。
似乎没有从PHP内部禁用连接身份验证的方法。
当前的解决方法是将其添加到MySQL服务器配置中(通常可以在/etc/mysql/my.cnf或/etc/my.cnf中找到)。
[mysqld]
skip-secure-auth这将从服务器端禁用安全auth,迫使较新的客户端(例如较新的PHP/mysqli版本)在连接时跳过安全auth,从而有效地在所有连接客户端复制--跳过-安全-auth。
作为一种可能的解决方案,不需要更改MySQL服务器配置,似乎有一个MYSQLI_OPT_SSL_VERIFY_SERVER_CERT选项可以通过mysqli_options()在mysqli连接实例上设置。
mysqli_options($conn, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);如果将此设置为false ,则会产生您正在寻找的行为,尽管有报告称这不起作用,而在我们的测试中,它实际上并不工作。
似乎有一个更新被推送到PHP5.6.16,并随后解决了这个问题。我猜您正在PHP5.6.0和5.6.15之间运行一些东西。
https://stackoverflow.com/questions/34806310
复制相似问题