我知道有很多问题与我的问题一样,但我希望你能帮助我找到另一个解决方案.
我们正在为我们的项目使用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为0,重启MySQL,为MySQL用户设置新密码并重新启动MySQL,但仍然是相同的.每当我们在查询窗口中运行它时:
SELECT user, Length(Password) FROM mysql.user;
它仍然显示16作为我们正在使用的用户的密码长度.并且在检查mysql服务器变量和设置时,old passwords也是ON(即使我们已经在my.cnf中将old_password设置为0).
这可能有什么问题?我将衷心感谢您的帮助.
更新:与此同时,我们删除了db用户的密码,以便我们能够访问数据库.但是我仍在寻找其他解决方案,因为我在网上找到的解决方案(比如old_passwords=1在my.cnf中删除或评论,将old_passwords设置为0并设置新密码然后重启)对我来说不起作用.
另一个更新:通常,这个问题的解决方案将old_passwords在mysql中启动,但是,如PHP文档中所述,
新的mysqlnd库不读取mysql配置文件(my.cnf/my.ini).
那么这是否意味着设置old_passwords为0 in my.cnf没有用?我仍然没有找到解决这个问题的方法.
我们是否需要在所使用的任何平台上进行升级?在此先感谢您的帮助.