开发者社区> 问答> 正文

无法使用旧的身份验证连接到MySQL 4.1+

我试图连接到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版本不是一种选择。

谁有想法?

展开
收起
保持可爱mmm 2020-05-11 17:08:15 494 0
1 条回答
写回答
取消 提交回答
  • 编辑:仅当您在控制MySQL服务器时,这才适用...如果您不看看Mysql密码哈希方法old vs new

    首先用SQL查询检查

    SHOW VARIABLES LIKE 'old_passwords' (在MySQL命令行客户端,HeidiSQL或您喜欢的任何前端中)默认情况下是否将服务器设置为使用旧密码架构。如果返回,则old_passwords,Off您恰好在user表中有旧密码条目。MySQL服务器将对这些帐户使用旧的身份验证例程。您只需为该帐户设置一个新密码,就会使用新例程。

    您可以查看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)应该能够连接到服务器。

    另请参见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来源:stack overflow

    2020-05-11 17:08:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像