MySQL密码插件

你问的"密码插件",MySQL 里其实分两类:一类管"怎么验证密码"(认证插件),一类管"密码能不能用"(强度校验)。26.10 里两套都在,而且这一版有个新东西。

一、认证插件(决定账号用哪种方式登录)

插件名 作用 26.10 状态
**caching_sha2_password**​ SHA-2 加盐哈希 + 服务端缓存,速度快 ✅ 默认,新建用户不指定就是用这个
mysql_native_password 老式 SHA-1 哈希,兼容 5.x / 旧驱动 ⚠️ 已弃用,8.4+ 默认关闭,需 mysql_native_password=ON 显式开启
sha256_password 早期 SHA-256 实现,不带缓存 ⚠️ 已弃用,建议迁到 caching_sha2_password
**authentication_webauthn**​ FIDO/WebAuthn 硬件密钥,无密码 + 多因子 🆕 26.10 起进入 Community 版(之前只有 HeatWave/企业版有)
auth_socket 比对 OS 用户名,不验密码,本地运维账号用 ✅ 可用(Linux)
mysql_no_login 禁止直接登录,只能做 proxy / role 中转 ✅ 可用
企业版专属 authentication_pam、authentication_ldap_sasl、authentication_ldap_simple、authentication_kerberos 等 仅 Enterprise Edition

看账号在用哪个:

复制代码
SELECT user, host, plugin FROM mysql.user;
-- 或
SHOW VARIABLES LIKE 'authentication_policy';

指定插件建用户:

复制代码
CREATE USER 'u1'@'%' IDENTIFIED WITH caching_sha2_password BY 'Str0ng!Pwd';
CREATE USER 'backup'@'localhost' IDENTIFIED WITH auth_socket;
-- 26.10 新玩法:WebAuthn 无密码
CREATE USER 'u2'@'%' IDENTIFIED WITH authentication_webauthn;

二、密码强度插件(决定密码过不过得了校验)

名称 形态 说明
**component_validate_password**​ 组件(8.4+ 推荐) 长度、大小写/数字/特殊字符组合、字典词检查
validate_password 旧式插件 已被组件取代,升级 8.4+ 时会保留,新装建议切组件
复制代码
INSTALL COMPONENT 'file://component_validate_password';   -- 装一次永久生效
SHOW VARIABLES LIKE 'validate_password.%';
-- validate_password.policy = MEDIUM(默认,要求 8 位 + 三类字符)

这就是为什么你前面 IDENTIFIED BY 'pswddict' 可能报 1819:密码太弱被这个组件拦了。

三、怎么选

  • 新业务 / 26.10 新库 :啥也别配,caching_sha2_password 就是默认,密码按强密码设。

  • 老程序连不上 (报 caching_sha2_password 相关 handshake 错):要么升级驱动(Connector/J 8.0+、Python mysql-connector 8.0+),要么单独给那个账号降级:

    复制代码
    ALTER USER 'MigratePSDT'@'localhost'
      IDENTIFIED WITH mysql_native_password BY 'Str0ng!Pwd';

    同时在 my.cnf 里开 mysql_native_password=ON(8.4+ 默认是关的)。

  • 想彻底不用密码 :26.10 可以上 authentication_webauthn 配 YubiKey 之类的设备。

  • 本地备份/监控账号 :用 auth_socket,连密码都不用存。

相关推荐
腾科IT教育1 小时前
Oracle考试全解析:OCP、OCM认证体系与核心考点备考指南
数据库·oracle·开闭原则
叼烟扛炮10 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
.痞老板.13 小时前
mysql初阶--数据库基础
数据库·mysql
城北徐宫14 小时前
MySQL约束条件一览
数据库·mysql
码农小河6614 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
ClouGence16 小时前
数据库变更审批困局,被这个开源工具解决了
数据库·开源
TDengine (老段)17 小时前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp
starrocks_stella18 小时前
EMR Serverless StarRocks Object Table:用 SQL 连接 OSS 文件与多模态 AI
数据库
这个DBA有点耶18 小时前
以为自增ID只是有空洞?聊聊双主架构下无声的“数据覆盖”
数据库·mysql·dba