mysql 8.4.3 1524 - Plugin ‘mysql_native_password‘ is not loaded

在 MySQL 8.4.3 中,默认情况下不再启用 mysql_native_password 插件,取而代之的是更安全的 caching_sha2_password 插件。因此,当尝试使用 mysql_native_password 插件时,可能会遇到 ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded 的错误。

解决方法:

  1. 使用默认的 caching_sha2_password 插件:

    • 修改用户的身份验证插件:
      在 MySQL 控制台中,执行以下命令,将用户的身份验证插件修改为 caching_sha2_password
      ALTER USER 'your_username'@'your_host' IDENTIFIED WITH caching_sha2_password BY 'your_password';
      
      your_usernameyour_hostyour_password 替换为实际的用户名、主机和密码。
    • 刷新权限:
      FLUSH PRIVILEGES;
      
    • 验证修改:
      SELECT user, host, plugin FROM mysql.user WHERE user = 'your_username';
      
      确保输出中显示该用户的插件为 caching_sha2_password
  2. 启用 mysql_native_password 插件(不推荐):
    如果由于兼容性原因需要继续使用 mysql_native_password 插件,可以手动启用该插件,但请注意这可能带来安全风险。

    • 编辑 MySQL 配置文件:
      在 MySQL 的配置文件(如 my.cnfmy.ini)的 [mysqld] 部分添加以下行:
      mysql_native_password=ON
      
    • 重启 MySQL 服务:
      根据操作系统,使用相应的命令重启 MySQL 服务。
    • 验证插件状态:
      在 MySQL 控制台中,执行:
      SHOW PLUGINS;
      
      确保 mysql_native_password 插件的状态为 ACTIVE
    • 修改用户的身份验证插件:
      ALTER USER 'your_username'@'your_host' IDENTIFIED WITH mysql_native_password BY 'your_password';
      
    • 刷新权限:
      FLUSH PRIVILEGES;
      

注意:

  • mysql_native_password 插件已被弃用,建议使用更安全的 caching_sha2_password 插件。
  • 在修改身份验证插件之前,确保客户端和应用程序兼容新的身份验证方式。

更多详细信息,请参考以下资源:

### 解决方案 在 CentOS 或 RHEL 系统上,如果遇到 `libcrypto.so.1.1` 和 `libssl.so.1.1` 缺失的问题,通常是因为这些库属于 OpenSSL 1.1 版本,而某些旧版操作系统可能默认提供的是 OpenSSL 1.0 库。以下是具体的解决方案: #### 方法一:升级系统的 OpenSSL 到 1.1 版本 可以通过编译安装最新版本的 OpenSSL 来解决问题。 ```bash # 下载并解压 OpenSSL 源码包 wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar -xzvf openssl-1.1.1t.tar.gz cd openssl-1.1.1t # 编译并安装 ./config --prefix=/usr/local/openssl shared zlib make && make test && make install ``` 完成上述操作后,更新动态链接器缓存以使新安装的库生效: ```bash echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl-1.1.conf ldconfig ``` 验证是否成功加载新的库文件: ```bash ldd $(which mysql) | grep libssl ``` 应显示 `/usr/local/openssl/lib/libssl.so.1.1` 的路径[^5]。 --- #### 方法二:通过第三方仓库获取兼容的 RPM 包 可以启用 EPEL 或 IUS 社区仓库来获得支持 OpenSSL 1.1 的软件包。 对于 CentOS/RHEL 7: ```bash sudo yum install epel-release sudo yum-config-manager --enable rhui-REGION-rhel-server-extras sudo yum install https://repo.ius.io/ius-release-el7.rpm sudo yum update sudo yum install mysql-community-client-plugins ``` 此方法会自动处理依赖关系,并安装所需的 `libcrypto.so.1.1` 和 `libssl.so.1.1` 文件[^6]。 --- #### 方法三:手动复制所需共享库到系统目录 当无法更改全局环境时,可以选择将 OpenSSL 1.1 的 `.so` 文件放置于特定位置供 MySQL 使用。 步骤如下: 1. **下载预构建的 OpenSSL 动态库** 可从官方或其他可信源下载已编译好的 `libcrypto.so.1.1` 和 `libssl.so.1.1`。 2. **拷贝至标准路径** 将这两个文件放入 `/usr/lib64` 或其他 LD_LIBRARY_PATH 中定义的位置: ```bash cp libcrypto.so.1.1 /usr/lib64/ cp libssl.so.1.1 /usr/lib64/ ldconfig ``` 3. **确认可用性** 运行以下命令测试是否存在冲突: ```bash ldd /path/to/mysql | grep ssl ``` --- #### 注意事项 确保所使用的 MySQL 安装程序与当前 Linux 发行版匹配。例如,在 CentOS 7 上需选择 el7 构建的 RPM 包[^4]。 --- ### 提供的代码片段 以下是一个简单的脚本来检测缺失的库及其版本号: ```bash #!/bin/bash MISSING_LIBS=() for LIB in "libcrypto.so.1.1" "libssl.so.1.1"; do if ! ldconfig -p | grep -q "$LIB"; then MISSING_LIBS+=("$LIB") fi done if [ ${#MISSING_LIBS[@]} -ne 0 ]; then echo "Missing libraries:" printf "%s\n" "${MISSING_LIBS[@]}" else echo "All required libraries are present." fi ``` 运行该脚本可快速定位问题所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值