我知道有很多问题与我的问题相同,但我希望你能帮助我找到另一个解决方案。
我们的项目使用 Symfony 2.5.10、PHP 5.4.44 和 MySQL 4.1.20。
每当我尝试登录系统或进行任何涉及连接到数据库的操作(例如使用 FOS 命令添加新用户),我都会收到此错误:
SQLSTATE[HY000] [2000] mysqlnd 无法使用旧式不安全的身份验证方式连接到 MySQL 4.1+。请使用管理工具使用命令 SET PASSWORD = PASSWORD('your_existing_password') 重置密码。这将在 mysql.user 中存储新的、更安全的哈希值。如果该用户用于 PHP 5.2 或更早版本执行的其他脚本中,您可能需要从 my.cnf 文件中删除 old-passwords 标志。
我们已经尝试将 my.cnf
中的 old_passwords
设置为 0,重新启动 mysql,为 mysql 用户设置新密码并再次重新启动 mysql,但问题仍然存在。每当我们在查询窗口运行以下内容时:
SELECT user, Length(Password) FROM mysql.user;
目前使用的用户密码长度仍然显示为16个字符。即使我们已经在my.cnf文件中将old_password设置为0,查看mysql服务器变量和设置时,old passwords
仍然是ON。
可能出了什么问题?非常感谢您的帮助。
更新:暂时,我们删除了数据库用户的密码以便我们能够访问数据库。但我仍在寻找其他解决方案,因为我在网上找到的那些解决方案(例如在my.cnf中删除或注释掉old_passwords=1
,将old_passwords设置为0并设置新密码,然后重新启动)对我没有用。
另一个更新:通常,解决此问题的方法是在mysql中将old_passwords
关闭,但正如PHP文档中所述,新的mysqlnd库不会读取mysql配置文件(my.cnf/my.ini)。
这是否意味着在
my.cnf
中将old_passwords
设置为0没有用途?我还没有找到解决此问题的方法。
我们需要升级任何已使用的平台吗?非常感谢您的帮助。
SET SESSION old_passwords=FALSE;
,甚至修改了上面提到的 my.cnf 文件。 :( - user123SET PASSWORD = UPPER(SHA1(UNHEX(SHA1('yourpassword'))));
时,它会显示SQL语法错误。 - user123