客户端不支持服务器请求的身份验证协议。

4

我需要建立PHP4环境并与mysql5配合使用,但当我尝试连接mysql时遇到了问题。

感谢任何帮助。


请参阅 https://dev.mysql.com/doc/refman/5.5/en/old-client.html?acf=1#add-comment。 - rogerdpack
3个回答

7

解决方案是使用MySQL的OLD_PASSWORD函数更新数据库用户密码。例如:

[chris@office ~]$ mysql -u root -p mysql

Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 267
Server version: 5.1.41-3ubuntu12.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Database changed

mysql> update user set Password=OLD_PASSWORD('password') WHERE User='username';

Query OK, 0 rows affected (0.02 sec)
Rows matched: 0  Changed: 0  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql>

1
从 PHP 5.6.5 开始,您需要在 my.ini 文件的 [mysqld] 部分中设置以下值,以启用与 mysql 4 客户端的连接: old_passwords=1 secure-auth=0您还可能需要将 mysql_old_password 添加到 mysql 数据库中的 user 表中的 plugin 部分。 - Wertisdk

3

这是一个已知的MySQL问题。C.5.2.4.客户端不支持身份验证协议:

MySQL 5.1使用基于密码哈希算法的身份验证协议,与旧版(4.1之前)客户端不兼容。如果你从4.0升级到了该服务器,使用旧版客户端尝试连接可能会失败,出现以下消息:“客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端”。

要解决此问题,应采用以下方法之一:
1. 将所有客户端程序升级为使用4.1.1或更新的客户端库。
2. 使用仍具有旧版样式密码的帐户在使用早期版本的客户端程序连接服务器时。
3. 重置每个需要使用旧版客户端程序的用户的密码以符合旧版样式。
4. 告诉服务器使用旧版密码哈希算法。


这是一个解决方案,但我找到了直接的过程来解决它(更详细的相同答案),我现在在这里提供它,无论如何还是谢谢! - palmic

0

我曾经遇到过同样的问题。我使用的是最新的MySQL版本5.7。

重新安装旧版本的MySQL 5.5解决了这个问题。

我认为在最新的MySQL 5.7中有新的身份验证要求。

只需重新安装MySQL 5.5即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接