开发者社区> 问答> 正文

MySQL PHP不兼容?mysql

我在本地运行WAMP,但连接到远程MySQL数据库。PHP的本地版本是最新的5.3.0。

5.0.45版是远程数据库之一,可以正常工作。但是,我尝试连接的另一个远程数据库(版本5.0.22)在死亡之前引发以下错误:

警告:mysql_connect()[function.mysql-connect]:OK包比预期的要短6个字节。PID = 5880 in ...

警告:mysql_connect()[function.mysql-connect]:mysqlnd无法使用旧的身份验证连接到MySQL 4.1+。

WTF?

更新:

恢复到PHP 5.2。*,即低于5.3.0的任何版本都可以完全解决问题。只要我没有运行5.3.0,就可以连接到两个数据库。我不确定这种怪异的解释是什么。

展开
收起
保持可爱mmm 2020-05-18 09:52:25 32295 0
1 条回答
写回答
取消 提交回答
  • "您正在使用的MySQL帐户可能具有旧的16个字符长的密码(哈希)。 您可以使用MySQL客户端(例如HeidiSQL,MySQL控制台客户端或任何其他客户端)和有权访问的帐户进行测试mysql。user表。如果密码字段包含16个字符,则它是一个旧密码,并且mysqlnd无法使用它来连接到MySQL服务器。 您可以使用以下方式为该用户设置新密码

    SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword') 参见dev_mysql_set_password

    编辑: 您还应该检查服务器是否默认设置为使用/创建旧密码。

    edit2: 请运行查询

    SELECT Length(Password), Substring(Password, 1, 1) FROM mysql.user WHERE user='username' 在5.0.22服务器上(“失败”的服务器)。替换username为您在mysql_connect()中使用的帐户。 那会返回什么?" 来源:stack overflow

    2020-05-18 10:10:14
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载

相关镜像