Home >Backend Development >PHP Tutorial >php与mysql 无法连接 mysql_connect() [function.mysql-connect]: Client does not suppor

php与mysql 无法连接 mysql_connect() [function.mysql-connect]: Client does not suppor

WBOY
WBOYOriginal
2016-06-23 13:57:121174browse

php与mysql无法连接,提示错误如下:
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client 
in D:\XXXX\XXXX\apache-tomcat-8.0.5\webapps\Project\opendb.php on line 5
Could not connect: Client does not support authentication protocol requested by server; consider upgrading MySQL client


php的版本是php-4.4.9
myslq的版本是5.6
tomcat的版本是8.0.5

想要在本地搭建一个php的开发环境(tomcat+mysql+php)。
现在
1、Tomcat与php已经调通,在页面上可以看到phpinfo。
2、tomcat与mysql也调通,用jsp页面可以查询mysql中的表信息。

注:在网上查到的解决方法都不行。下面方法试过了,还是同样的错误提示。
----------------------------------------------------------------------------------------------------
主要是改变连接 MySQL 帐户的加密方式,MySQL 4.1/5.0 是通过 PASSWORD 这种方式加密的。可以通过以下两种方法得到解决:

1) MySQL->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');

     MySQL->FLUSH PRIVILEGES;

2)MySQL->UPDATE MySQL.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';

     MySQL->FLUSH PRIVILEGES;

----------------------------------------------------------------------------------------------------


回复讨论(解决方案)

你的 mysql 是自己安装吧?

tomcat、php、mysql都是自己安装的

你的 mysql 是自己安装吧?



tomcat、php、mysql都是自己安装的 

背景
从 php 5.3 开始,php 的 mysql 操作只使用内置的 mysql 客户端
显然这个客户端的版本是要低于 5.6 的,但不影响使用

原因
你安装 mysql 时,安装程序会把 mysql 的安装路径追加到操作系统环境变量 PATH 中
这就是不能访问的根源

补救
所以你需要从 PATH 中去掉 mysql 的路径
不过这样一来,jdbc 可能就无法连接 mysql 了,可能需要重新配置一下

背景
从 php 5.3 开始,php 的 mysql 操作只使用内置的 mysql 客户端
显然这个客户端的版本是要低于 5.6 的,但不影响使用

原因
你安装 mysql 时,安装程序会把 mysql 的安装路径追加到操作系统环境变量 PATH 中
这就是不能访问的根源

补救
所以你需要从 PATH 中去掉 mysql 的路径
不过这样一来,jdbc 可能就无法连接 mysql 了,可能需要重新配置一下




非常感谢回复。
首先我使用的php是4.4.9,而不是5.3以上版本。
其次,在PATH中并没有mysql的路径。

背景
从 php 5.3 开始,php 的 mysql 操作只使用内置的 mysql 客户端
显然这个客户端的版本是要低于 5.6 的,但不影响使用

原因
你安装 mysql 时,安装程序会把 mysql 的安装路径追加到操作系统环境变量 PATH 中
这就是不能访问的根源

补救
所以你需要从 PATH 中去掉 mysql 的路径
不过这样一来,jdbc 可能就无法连接 mysql 了,可能需要重新配置一下



还有个问题,不知道是否有关系。
在我利用:MySQL->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
修改密码时会提示:ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
当改为MySQL->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('');时会成功。
※及密码为空。

但是我通过mysqladmin -u root -p password 是可以修改密码的,jdbc在密码为空和不为空时都可以访问。

这个问题还是没有解决,但是我通过其他方法配置成功了。

把mysql5.6卸载后安装了mysql4.1。 就没有那个错误了。
但有出现了一个新问题,在php页面中我写的用户是A,但是错误提示说B@localhost (B是我本机的用户名)不能访问mysql。
后来在mysql的user表中新增了一个B的用户。
终于搞定了。

还是感谢版主及时回复。。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn