首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用php安全8月- MySQL 5.6.15?

如何使用php安全8月- MySQL 5.6.15?
EN

Stack Overflow用户
提问于 2016-01-15 07:39:08
回答 1查看 5.8K关注 0票数 2

我试图访问第三方数据库,并出现以下错误:

警告: mysql_pconnect():mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。

但是,我可以使用以下命令通过命令提示符访问数据库:

代码语言:javascript
复制
mysql -uTheUseerNAme -pThePassword DbName -h HostName --skip-secure-auth

注意:在上面的命令中,我使用--skip-secure-auth访问数据库。但是现在我的问题是,我们可以在php中做同样的事情,同时在config.php文件中连接数据库吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 16:06:14

对于较新版本的PHP (5.6)和mysqli驱动程序,连接到MySQL服务器的默认方法是使用安全授权(TLS)。看起来,当使用旧的MySQL服务器时,这将失败。

似乎没有从PHP内部禁用连接身份验证的方法。

当前的解决方法是将其添加到MySQL服务器配置中(通常可以在/etc/mysql/my.cnf或/etc/my.cnf中找到)。

代码语言:javascript
复制
[mysqld]
skip-secure-auth

这将从服务器端禁用安全auth,迫使较新的客户端(例如较新的PHP/mysqli版本)在连接时跳过安全auth,从而有效地在所有连接客户端复制--跳过-安全-auth。

作为一种可能的解决方案,不需要更改MySQL服务器配置,似乎有一个MYSQLI_OPT_SSL_VERIFY_SERVER_CERT选项可以通过mysqli_options()在mysqli连接实例上设置。

代码语言:javascript
复制
mysqli_options($conn, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);

如果将此设置为false ,则会产生您正在寻找的行为,尽管有报告称这不起作用,而在我们的测试中,它实际上并不工作

似乎有一个更新被推送到PHP5.6.16,并随后解决了这个问题。我猜您正在PHP5.6.0和5.6.15之间运行一些东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34806310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档