在MySQL中执行 CREATE USER、ALTER USER 或修改密码时出现 ERROR 1819 (HY000),表示服务器已经收到语句,但新密码没有通过当前密码校验策略。这不是网络问题,也不是账号权限不足的通用提示。
处理重点是先确认服务器启用了哪种校验实现及具体规则,再决定提高密码强度,还是按组织安全要求调整策略。直接关闭密码校验会扩大弱口令风险,不应作为默认方案。

先确认报错来自密码校验策略
保留完整错误,并确认失败语句属于密码创建或修改:
CREATE USER 'appuser'@'10.%' IDENTIFIED BY 'ExamplePass';
ALTER USER 'appuser'@'10.%' IDENTIFIED BY 'NewExamplePass';
MySQL官方文档说明,启用 validate_password 后,明文密码会按策略检查;ERROR 1819正是未满足策略时返回的错误。不要把生产密码粘贴到工单、聊天记录或命令历史截图中。
查看组件和策略参数
MySQL 8可以先检查组件与系统变量是否存在:
SELECT * FROM mysql.component WHERE component_urn LIKE '%validate_password%';
SHOW VARIABLES LIKE 'validate_password%';
不同版本或安装方式可能使用插件形式,变量名表现也会不同。若变量列表为空,不要照搬网上的 SET GLOBAL,先核对版本和实际加载状态:
SELECT VERSION();
SHOW PLUGINS;
读懂LOW、MEDIUM和STRONG
默认参数下,LOW 主要检查长度;MEDIUM 还要求数字、小写字母、大写字母与特殊字符;STRONG 在此基础上增加字典检查。实际要求还受长度、字符计数和用户名检查参数影响。
SHOW VARIABLES WHERE Variable_name IN (
'validate_password.policy',
'validate_password.length',
'validate_password.number_count',
'validate_password.mixed_case_count',
'validate_password.special_char_count',
'validate_password.check_user_name'
);
不要只看policy名称,具体变量值才是当前服务器真正执行的规则。
优先生成符合要求的新密码
生产环境更稳妥的做法是使用密码管理器生成足够长、与用户名无关的随机密码,再通过安全渠道交付给应用。可以在不修改账户的情况下评估候选密码:
SELECT VALIDATE_PASSWORD_STRENGTH('仅在本地替换为候选密码');
该函数返回强度分数,但分数高不等于已经满足所有组织合规要求。执行 ALTER USER 后,还要同步更新应用密钥存储并安排连接切换,避免新旧密码不一致造成服务中断。
确需调整策略时控制影响范围
只有在明确的兼容性需求和审批记录下,才考虑修改策略参数。变更前记录原值,并优先使用持久化配置方式:
SET PERSIST validate_password.length = 12;
SET PERSIST validate_password.policy = 'MEDIUM';
参数能否动态修改及持久化方式取决于版本。降低全局策略会影响之后创建或修改的所有内部凭据账户,不能只因为一个旧应用不兼容就直接改成最低级别。更合理的方向是升级应用的密码存储和配置能力。
区分内部凭据和外部认证
密码校验能力主要面向由MySQL内部保存凭据的认证方式。使用LDAP、PAM或其他外部凭据系统的账户,密码策略可能由外部系统管理。先查看目标账户的认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user = 'appuser';
需要在隔离数据库中验证应用兼容性时,可以使用 萤光云 或 LightNode 建立测试实例。请使用虚构账号和替代密码,不要复制生产用户表或真实凭据。
修改后怎样验收
先确认账户修改语句成功,再从业务实际来源地址建立新连接,并检查应用连接池能否正常重建。完成切换后,撤销临时账号或旧密钥,避免两个密码长期并存。
验收标准是新密码符合当前策略、目标认证插件正确、应用能用新凭据连接,并且策略没有被无意降级。 只看到 Query OK 还不足以证明业务已经完成切换。
FAQ
把密码加长就一定能解决ERROR 1819吗? 不一定。MEDIUM还可能要求大小写、数字和特殊字符,STRONG还涉及字典检查,用户名匹配也可能被拒绝。
可以直接卸载validate_password吗? 技术上存在卸载路径,但会取消相应保护。生产环境应先评估合规要求、替代控制和受影响账户,不应为了绕过一次报错直接移除。
温馨提示
修改密码策略属于安全配置变更,建议记录原值、变更原因和回滚方案。优先提升密码质量,只有明确需要时才调整全局规则。


