当前位置: 首页 > 面试题库 >

错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+

毋宸
2023-03-14
问题内容

我收到以下错误:

数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+。请使用管理工具通过命令重置密码SET PASSWORD = PASSWORD('your_existing_password')

这将在中存储一个新的,更安全的哈希值mysql.user。如果此用户在PHP
5.2或更早版本执行的其他脚本中使用,则可能需要从my.cnf文件中删除old-passwords标志

我在本地计算机上使用PHP 5.3.8和MySQL 5.5.16,并且我的主机(媒体寺庙)正在运行PHP 5.3 MySQL
5.0.51a。实时服务器上的版本比我计算机上的版本旧。

如何解决此错误并从本地计算机连接到MySQL?

我知道也有与此类似的帖子,但是我已经尝试了所有帖子,但都没有工作。


问题答案:
  • 在my.cnf中删除或评论old_passwords = 1

重新启动MySQL。如果不这样做,MySQL将继续使用旧的密码格式,这意味着您无法使用内置的PASSWORD()散列函数来升级密码。

旧密码哈希值为16个字符,新密码哈希值为41个字符。

  • 连接到数据库,并运行以下查询:
    SELECT user, Length(`Password`) FROM  `mysql`.`user`;
    

这将向您显示哪些密码是旧格式,例如:

+ ---------- + -------------------- +
| 用户| 长度(`密码`)|
+ ---------- + -------------------- +
| 根| 41 |
| 根| 16 |
| user2 | 16 |
| user2 | 16 |
+ ---------- + -------------------- +

请注意,每个用户可以有多行(每个不同的主机规范对应一行)。

要更新每个用户的密码,请运行以下命令:

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';

最后,刷新特权:

FLUSH PRIVILEGES;

来源:如何在PHP5.3上修复“ mysqlnd无法使用旧认证连接到MySQL
4.1+”



 类似资料:
  • 问题内容: 我知道有很多类似的问题,实际上我已经阅读了全部(9)。 但是,它们都不能解决我的问题。 我有一个共享主机包(最低要求)。我的软件包中包括域名,以及托管MySQL服务器的单独IP地址。对于开发,我使用PHP 5.4的开发服务器,并使用托管包中提供的MySQL服务器。 该问题仅在我的PC上出现,因为我已经安装了PHP 5.4,但是我的Web主机已经安装了PHP 5.2.17,并且不会升级。

  • 问题内容: 我试图连接到http://bluesql.net上的mySQL数据库,但是当我尝试连接时,出现此错误: 我已经研究过了,它与MySQL 4.1之前使用的一些旧密码方案有关。较新的版本可以选择使用旧密码,我已阅读过此密码可能会导致此问题。 我正在运行php 5.3,并与mySQLi(新的mysqli(…))连接。我希望我可以在代码中做一些事情以连接到bluesql.net上的数据库- 显

  • 我在将Spring应用程序与连接并始终获得异常时遇到了问题。我能够写入数据库并从数据库中获取信息,但是,一旦我实现了一种针对它进行身份验证的方法,我似乎遇到了问题。 我已经阅读了几个不同的来源,但未能使其正常工作。我能够通过。 下面是我的代码: 我的数据源在这里定义为: 我使用创建了“/成员/添加”路径,以便我可以在尝试进行身份验证之前注册用户。但是,我得到了以下堆栈跟踪的异常: 调用堆栈: 在经

  • 我有一个 Docker 容器,其中包含一个服务,该服务需要连接到 Vault 以检索机密以运行该服务。我的容器正在运行 Linux CentOS 在Docker容器中运行的entrypoint.sh脚本中,我尝试使用Vault CLI检索Vault机密,然后使用AWS身份验证进行身份验证。 来自多克文件的相关代码: entrypoint.sh相关代码 注意:$AWS_访问_密钥_ID、$AWS_机

  • 我在Ubuntu上安装了自己的Jitsi实例,遵循使用官方软件包的文档。这很有魅力。但我不想有一个完全开放的实例,所以我遵循了https://github.com/jitsi/jicofo#secure-域需要登录才能创建会议。 据我所知,我完全遵循了文档,但在重新启动Jitsi后,我无法再创建会议。我看到以下行为: 私人网址:我得到一个消息,会议还没有开始,还有一个“我是主持人”按钮。如果我按下

  • 在使用spring 4.1.6、spring security 4.0.1、,和JavaConfig,我们正在尝试实现LDAP身份验证,但不是在configure(AuthenticationManagerBuilder auth)方法中定义LDAP服务器的属性(url等),而是希望从已在容器上配置并具有所有所需属性的JBOSS安全域中获取属性。 我们尝试了几件事,并在网上搜索了实现这一点的方法,