【问题标题】:Could not connect to MySQL 4.1+ using old insecure authentication无法使用旧的不安全身份验证连接到 MySQL 4.1+
【发布时间】:2016-01-21 06:32:17
【问题描述】:

我知道有人提出了很多与我相同的问题,但我希望你能帮助我找到另一个解决方案。

我们的项目使用 Symfony 2.5.10PHP 5.4.44MySQL 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 作为我们正在使用的用户的密码长度。而且在检查 mysql 服务器变量和设置时,old passwordsON(即使我们已经在 my.cnf 中将 old_password 设置为 0)。

这可能有什么问题?非常感谢您的帮助。

更新:与此同时,我们删除了 db 用户的密码,以便我们能够访问数据库。但是我仍在寻找其他解决方案,因为我在网上找到的那些解决方案(例如删除或注释掉 my.cnf 中的 old_passwords=1,将 old_passwords 设置为 0 并设置新密码然后重新启动)对我不起作用。

另一个更新:通常,解决此问题的方法是在 mysql 中设置 old_passwords 关闭,然后,如 PHP documentation 中所述,

新的 mysqlnd 库不读取 mysql 配置文件 (my.cnf/my.ini)。

那么这是否意味着在my.cnf 中将old_passwords 设置为0 没有用?我还没有找到解决这个问题的办法。

我们需要对所用的任何平台进行升级吗?提前感谢您的帮助。

【问题讨论】:

标签: php mysql symfony password-hash mysqlnd


【解决方案1】:

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

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

【讨论】:

  • 他们使用的是 MySQL 4.1.20 而不是 MySQL 5.7.6,所以它应该可以工作 ;)
【解决方案2】:

请尝试此解决方案

http://laravel.io/forum/04-16-2014-solving-mysqlnd-cannot-connect-to-mysql-41

根据解决方案,您只需再次设置密码并指定以新格式保存即可。

mysql> SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
Query OK, 1 rows affected (0.00 sec);

【讨论】:

  • 我试过了,但输出还是一样。SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2011-09-25
  • 2012-01-18
  • 1970-01-01
  • 2015-03-08
相关资源
最近更新 更多