mysqli 在 PHP 7.4 中支持 caching_sha2_password 吗?

2023-11-25

当我尝试从 PHP 7.3 升级到 PHP 7.4 时,收到以下错误:

执行 caching_sha2 auth 109 时出现意外的服务器响应

据我所知,这表明 PHP 7.4 MySQLi 正在尝试使用caching_sha2_password插入。本文指出 PHP MySQLi 不支持该插件(它也暗示将来支持它),但由于 PHP 7.4 是新的并且似乎正在尝试使用它,我想它应该可以工作。此外,错误消息与不支持的错误消息不同(拒绝访问 vs. 身份验证方法未知).

所以我将 MySQL 身份验证插件更改为caching_sha2_password(使用与之前相同的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;

但这又导致了另一个错误:

用户“root”@“localhost”的访问被拒绝(使用密码:YES)。

切换回 PHP 7.3 并mysql_native_password它又起作用了。

我对两个插件、同一个网站使用了相同的密码,并应用了相同的 php.ini 更改。 然而我没有改变任何mysqli配置。 MySQL 的日志没有显示任何内容,apache2 日志仅显示“访问被拒绝”错误消息。

php7.4-mysqli是否支持caching_sha2_password? YES

为什么我的密码被拒绝以及如何修复? 请参阅我的后续问题

另外,如果 MySQLi 仍然不支持该插件:我该如何使用mysql_native_password有了它?


我对此进行了测试,PHP 7.4 中的 mysqli 确实支持 caching_sha2_password。

php -v
PHP 7.4.0 (cli) (built: Nov 29 2019 16:18:44) ( NTS )

这是我编写的一个简单的 PHP 脚本,用于连接到在 docker 容器中运行的 MySQL 8.0.17(使用端口 6603):

<?php
error_reporting(E_ALL);
$conn = new mysqli('127.0.0.1', 'root', 'root', '', 6603);
$result = $conn->query("SELECT NOW()");
$now = $result->fetch_row()[0];
echo "$now\n";

我确认我的 MySQL 实例正在使用 caching_sha2_password:

mysql> select user,host,plugin from mysql.user where user='root';
+------+-----------+-----------------------+
| user | host      | plugin                |
+------+-----------+-----------------------+
| root | %         | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------+-----------+-----------------------+

mysql> select @@default_authentication_plugin;
+---------------------------------+
| @@default_authentication_plugin |
+---------------------------------+
| caching_sha2_password           |
+---------------------------------+

运行我的PHP脚本,成功了。

php my.php
2019-12-08 18:11:58

但是,当我尝试将密码更改为''就像你一样,我能够重现相同的错误:

PHP 警告:mysqli::__construct():在第 5 行 /Users/bkarwin/Documents/SO/my.php 中执行 caching_sha2 auth: 0 时出现意外的服务器响应

当我恢复密码并将其设置为非空字符串时,问题就解决了。

不要使用空白密码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysqli 在 PHP 7.4 中支持 caching_sha2_password 吗? 的相关文章

  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • MySQL如何获取unix时间戳的时间差

    我有一个保存值1506947452的变量 需要使用公式从该日期提取分钟 started data now date 但started date采用unix时间戳格式10位int数字 我以ajax形式收到并需要放入mysql查询i试试这个 S
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get

随机推荐

  • asp.net Web Api - 默认错误消息

    有没有办法更改 Web Api 的错误消息的默认行为 例如 GET trips abc 回应 释义 HTTP 500 Bad Request Message The request is invalid MessageDetail The
  • 使用向量元素调用函数的通用模板

    我想用来自向量的参数调用一个函数 仅此一项当然非常简单 但我想编写一个通用包装器来为我完成任务 稍后它还应该从像 boost variant 这样的泛型类型进行转换 但我想在这个问题解决后我可以处理这个问题 这是我的第一次尝试 includ
  • 在同一个应用程序中使用谷歌地图和百度地图

    我想知道是否有人在同一版本中实现了谷歌地图V2和百度地图 因为通用汽车在中国没有按预期运作 或者我应该将项目分成两个分支 然而 最好跳过维护两个分支 我的解决方案是照常实现 GM 但是如果用户设置了中国 通过设置 静态地图 则使用静态地图
  • SKScene iPad 高度宽度反转

    我正在尝试在仅支持横向模式的 iPad 应用程序中用图块填充我的 SKScene 在场景中我检测到 h w 如下 int h UIScreen mainScreen bounds size height int w UIScreen mai
  • 如何为Asp.Net中的所有子文件夹注册HttpHandler?

    我想注册一个 HttpHandler 以包含根文件夹的所有子文件夹 无论它们嵌套的深度如何 我本希望下面的代码的行为能够做到这一点 但实际上它只包含直接位于根文件夹中的项目
  • 第 25 行出现错误 1030 (HY000):来自存储引擎的错误 168

    我正在尝试将 sql 导入到我的数据库中 我正在使用 Ubuntu 操作系统 这是一个错误 david david VirtualBox mysql u root p test project lt db sql Enter passwor
  • 如何验证 string.Format 方法的格式

    string Format 具有以下方法签名 string Format format params 我想每次都传递自定义格式 string custFormat Hi 0 n I only care about numbers here
  • 如何使用 Require.js 实现 TinyMCE?

    我目前正在将 TinyMCE 源作为依赖项传递 然后调用 tinyMCE init 但它没有初始化 TinyMCE 当我console log TinyMCE时 它返回一个TinyMCE对象 代码示例如下 define jQuery Und
  • 我有一个国家代码列表和一个语言代码列表。如何从国家/地区代码映射到语言代码?

    当用户访问该网站时 我可以获得他们的国家 地区代码 我想用它来设置默认语言 如果需要 他们可以稍后修改 只是根据他们所在的国家 地区对他们可能会说的语言进行一般猜测 是否存在从国家 地区代码到语言代码的明确映射 我找不到 我知道并非特定国家
  • 如何在MySQL数据库中存储.text文件?

    我可以将数据文件 例如txt文件 存储到MySql服务器吗 如果可以的话 如何保存它们 您可以使用LOAD DATA INFILE读取文件的内容并将其以结构化格式存储在数据库的表中 这比在客户端上读取和解析文件然后使用多个 INSERT 语
  • 如何使用选择器设置文本大小?

    我使用选择器 但不知道如何设置文本大小 也许我做错了什么 帮助 箭头 xml
  • Doxygen 在记录 PHP 时出现奇怪的问题 if

    当我尝试记录我的项目时 我遇到了一个奇怪的问题 我有以下代码 Set default action for called controller If no action is called default index will be set
  • REST JAX-RS javax.ws.rs.ProcessingException:

    每当我的 REST 客户端代码使用以下代码调用 REST 服务时 我都会遇到以下异常 Code public void putWatcher Watcher watcher System out println In REST Client
  • JRE系统库缺少tools.jar

    我正在使用 Ubuntu 12 04 LTS 在我的 Eclipse 项目中 我需要使用 com sun tools attach 包 但是 我的 JRE 系统库不包括包含该包的tools jar 文件 我尝试为 Java 6 和 7 安装
  • 如何将 IEnumerable 转换为 ObservableCollection?

    如何转换IEnumerable to ObservableCollection 根据MSDN var myObservableCollection new ObservableCollection
  • 使用 iText 7 获取 PDF 文件的创建日期

    我必须创建一个工具 将其创建日期添加到几个 pdf 文件名中 我想使用内部存储在 pdf 中的创建日期 为此我下载了 iText Community Edition 现在 我的代码是这样开始的 VB Module Module1 Sub M
  • Android 操作系统和 postgreSQL

    我们正在进行一个 Android 项目 但需要连接到我们在其他项目中使用的 postgreSQL 服务器 关于这个起点有什么建议吗 有什么东西 有偿或无偿 可以让我们实现这一目标吗 我意识到这是一个非常普遍的问题 尽管我们在编写桌面客户端
  • Primefaces 依赖 selectOneMenu 和 required="true"

    在我的应用程序中 我有三个下拉菜单 p selectOneMenu 说A B C 其中两个是相关的 说B和C 通过更改B的值 我动态地将值加载到C 还有一个文本框 当 on change 事件从这三个下拉列表中触发时 文本框的值由 ajax
  • 让 Xcode 忽略第 3 方项目中的 LLVM 构建警告

    我的 Xcode 工作区中有一个第三方项目 它是我的主项目的依赖项 并且我希望 Xcode 忽略来自该第三方项目的所有构建警告 最好我想忽略项目中 Vendor 组的所有构建警告 因为那是我放置所有第三方代码的地方 可能的 是的 这是可能的
  • mysqli 在 PHP 7.4 中支持 caching_sha2_password 吗?

    当我尝试从 PHP 7 3 升级到 PHP 7 4 时 收到以下错误 执行 caching sha2 auth 109 时出现意外的服务器响应 据我所知 这表明 PHP 7 4 MySQLi 正在尝试使用caching sha2 passw