"您正在使用的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