我试图连接到http://bluesql.net上的mySQL数据库,但是当我尝试连接时,出现此错误:
Connect Error (2000) mysqlnd cannot connect to MySQL 4.1+ using old authentication
我已经研究过了,它与MySQL 4.1之前使用的一些旧密码方案有关。较新的版本可以选择使用旧密码,我已阅读过此密码可能会导致此问题。
我正在运行php 5.3,并与mySQLi(新的mysqli(…))连接。我希望我可以在代码中做一些事情以连接到bluesql.net上的数据库- 显然我不控制如何设置他们的数据库。降级php版本不是一种选择。
谁有想法?
编辑:仅当您在控制MySQL服务器时,这才适用…如果您不看看Mysql密码哈希方法old vs new
首先用SQL查询检查
SHOW VARIABLES LIKE 'old_passwords'
(在MySQL命令行客户端,HeidiSQL或任何您喜欢的前端中)默认情况下是否将服务器设置为使用旧密码架构。如果返回,则old_passwords,Off您恰好在user表中有旧密码条目。MySQL服务器将对这些帐户使用旧的身份验证例程。您只需为该帐户设置一个新密码,就会使用新例程。
old_passwords,Off
user
您可以查看mysql.user表格(使用有权访问该表格的帐户)来检查将使用哪个例程
mysql.user
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
对于使用旧密码的帐户,这将返回 16 ;对于使用新密码的帐户,它将返回 41 (对于完全没有密码的帐户,将返回0;您可能还需要注意这些)。 使用MySQL前端的用户管理工具(如果有)或
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword'); FLUSH Privileges;
(替换User并Host使用您从上一个查询中获得的值。)然后再次检查密码的长度。现在应该是 41, 并且您的客户端(例如mysqlnd)应该能够连接到服务器。
User
Host
另请参见MySQL文档: http://dev.mysql.com/doc/refman/5.0/zh-CN/old- client.html http://dev.mysql.com/doc/refman/5.0/zh-CN/password -hashing.html * http://dev.mysql.com/doc/refman/5.0/en/set-password.html