【问题标题】:Why I can't connect to a MySQL 5.3.36 shared server using mysqli_connect and PHP 7.4, but it will work using php 7.1?为什么我不能使用 mysqli_connect 和 PHP 7.4 连接到 MySQL 5.3.36 共享服务器,但它可以使用 php 7.1 工作?
【发布时间】:2021-03-30 22:51:37
【问题描述】:

我在 Hostgator 上有这个共享帐户。使用 PHP 7.1 和 mysqli_connect,我连接到 MySQL 5.3.36 数据库没有问题。 PHP脚本应该没问题。托管公司给我发了一封电子邮件,让我知道他们将支持 PHP 7.4,他们将在一个月内删除所有旧版本。然后我将帐户切换到 PHP 7.4。 Wordpress 博客需要一些调整,但它现在使用 PHP 7.4。我用于动态文件目录的另一个数据库不会使用 PHP 7.4 连接。我收到以下错误消息:

服务器请求客户端未知的身份验证方法

根据我的搜索,罪魁祸首似乎是 MySQL 身份验证插件,因此 MySQL 无法正确处理密码。我会尝试解决这个问题,但看起来我无法从我的帐户中更改插件(mysql_native_password),并且主机公司技术支持可能不太关心我的问题。他们最好的答案是将 PHP 降级到 7.1。这是一个快速修复,但在一个月后将其删除后将无法正常工作。我也可以将网站移到其他地方或使用远程数据库,但有谁知道修复该错误并让一切正常工作的实际方法?

【问题讨论】:

  • 2019 年 12 月的 This post 似乎描述了同样的问题。那里给出了答案(对于 MySQL 8.0)。
  • 请启用正确的错误报告。您应该会看到一个额外的警告,告诉您请求了哪种身份验证方法。基于此,您必须寻找解决方案。见How to get the error message in MySQLi?
  • 你能告诉我你使用的是哪个 PHP 版本吗?
  • @Dharman 准确的 PHP 版本是 7.4.137.4.13。我试图在终端连接到 MySQL。我可以打开一个会话,但它是一个被监禁的访问。我无法修改 root。
  • @Luuk 如果我在mysqli_connect 之前使用mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);,它不会提供任何东西。如果我使用 mysqli_connect_errnomysqli_connect_error,我会得到 2054 和上面的错误消息。

标签: php mysql mysqli php-7.4


【解决方案1】:

在终端中使用 mysql 后,我查看了我的用户密码,并收到“密码需要 41 个字符散列”错误消息。我只是更改了我的密码,它现在可以工作了。似乎密码的存储方式发生了变化或错误已修复。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2023-03-15
    • 2011-03-21
    • 2014-07-12
    • 2016-07-12
    相关资源
    最近更新 更多