加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用旧的不安全身份验证无法连接到MySQL 4.1

发布时间:2020-12-13 13:57:34 所属栏目:PHP教程 来源:网络整理
导读:我知道有很多问题与我的同样关心,但我希望你能帮助我找出另一个解决方案. 我们正在为我们的项目使用Symfony 2.5.10,PHP 5.4.44和MySQL 4.1.20. 每当我尝试登录系统或任何涉及连接到数据库的行为(例如添加使用FOS命令的新用户)时,我收到此错误: SQLSTATE[HY0
我知道有很多问题与我的同样关心,但我希望你能帮助我找出另一个解决方案.

我们正在为我们的项目使用Symfony 2.5.10,PHP 5.4.44和MySQL 4.1.20.

每当我尝试登录系统或任何涉及连接到数据库的行为(例如添加使用FOS命令的新用户)时,我收到此错误:

SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(‘your_existing_password’). This will store a new,and more secure,hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

我们已经尝试将my.cnf中的old_password设置为0,重新启动mysql,为mysql用户设置一个新密码,并重新启动mysql,但仍然相同.每当我们在查询窗口中运行它:

SELECT user,Length(Password) FROM mysql.user;

它仍然显示16作为我们正在使用的用户的密码的长度.而且当检查mysql服务器变量和设置时,旧密码为ON(即使我们已经在my.cnf中将old_password设置为0).

这可能是错的?我真的很感谢你的帮助.

更新:与此同时,我们删除数据库用户的密码以使我们能够访问数据库.但是我仍然在寻找其他解决方案,因为我在网上找到的解决方案(如删除或注释掉old_passwords = 1在my.cnf中,将old_passwords设置为0并设置新密码然后重新启动)对我来说没有效果.

另一个更新:通常,这个问题的解决方案是在mysql中设置old_passwords,但是如PHP documentation所述,

the new mysqlnd library does not read mysql configuration files (my.cnf/my.ini).

那么这是否意味着在my.cnf中将old_passwords设置为0是没有用的?我还没有弄清楚这个问题的解决方案.

我们需要在任何平台上进行升级?先谢谢您的帮助.

MySQL服务器5.7.6中已弃用“SET PASSWORD”.

服务器5.7.6以下的语法是,

SET PASSWORD [FOR user] = password_option
password_option: {
    PASSWORD('auth_string')
  | OLD_PASSWORD('auth_string')
  | 'hash_string'
}

服务器5.7.6及更高版本所遵循的语法是

SET PASSWORD [FOR user] = password_option
password_option: {
    PASSWORD('auth_string')
  | 'auth_string'
}

也参考 – > http://dev.mysql.com/doc/refman/5.7/en/set-password.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读