首页/数据/数据库速查/ALTER USER 改密码、解锁与资源限制

ALTER USER 改密码、解锁与资源限制

改密码、解除锁定、切换认证插件、设置资源限制(每小时查询数/连接数)与 SSL 要求;密码修改后连接池需重连。

数据库速查数据更新于 2026-10-13

ALTER USER 是什么

ALTER USER 用来修改已有账号的属性:重置密码、解除锁定、切换认证插件、要求加密连接、设置资源限制(每小时查询数、连接数上限)。它不改变账号权限,只改账号自身的属性,是账号运维中最常用的语句之一。

基本信息

语法ALTER USER '用户'@'来源主机' 属性列表
改密码IDENTIFIED BY '新密码'
锁定状态ACCOUNT LOCK 与 ACCOUNT UNLOCK
连接要求REQUIRE SSL 或 REQUIRE X509
资源限制WITH MAX_USER_CONNECTIONS 与 MAX_QUERIES_PER_HOUR 等

典型使用场景

  • 密码轮换:定期改密码并记录变更,配合连接池热更新流程
  • 账号被锁定后恢复:连续失败触发锁定或人为锁定后解除
  • 限制单账号连接数:防止某个应用连接泄漏拖垮整个实例
  • 强制加密连接:对外网可达的账号要求 TLS,防止凭据明文传输
  • 密码过期策略:配合密码有效期,到期后要求强制修改

常用修改

常用修改
ALTER USER 'app'@'%' IDENTIFIED BY 'NewStr0ng#Pass!';              -- 改密码
ALTER USER 'app'@'%' ACCOUNT UNLOCK;                                -- 解锁
ALTER USER 'app'@'%' ACCOUNT LOCK;                                  -- 主动锁定
ALTER USER 'app'@'%' REQUIRE SSL;                                   -- 要求加密连接
ALTER USER 'app'@'%' WITH MAX_USER_CONNECTIONS 200                   -- 资源限制
  MAX_QUERIES_PER_HOUR 0;
ALTER USER 'app'@'%' IDENTIFIED WITH caching_sha2_password BY 'NewStr0ng#Pass!';
SELECT user, host, account_locked, password_expired FROM mysql.user WHERE user='app';

常用属性对照

属性作用注意
IDENTIFIED BY重设登录密码不会踢掉已建立的会话
ACCOUNT LOCK禁止新连接已登录会话仍然可用
REQUIRE SSL要求加密通道不支持加密的客户端会连不上
MAX_USER_CONNECTIONS单账号最大连接数设为 0 表示不限制
PASSWORD EXPIRE设置密码有效期到期后需强制修改才能继续使用
改密码不会断开已有会话:旧连接继续用旧凭据工作,要彻底生效需要在连接池侧重建连接。
启用 REQUIRE SSL 前先确认所有客户端都支持加密连接,否则业务会直接连不上且报错信息不直观。

变更前的准备

  • 记录变更前状态:先查一次账号属性,出问题时可回退比对
  • 确认依赖方:列出使用该账号的应用与任务,通知到位再改
  • 准备回退命令:改密码与改连接要求都要有对应的还原语句
  • 在低峰执行:连接要求变更会让部分客户端在重连前持续失败

易错点

  • 以为改密码会立即踢掉旧连接:旧会话仍在工作,权限回收后依然能执行操作
  • 启用 REQUIRE SSL 前未做客户端兼容性确认:业务整体连不上数据库
  • 把 MAX_USER_CONNECTIONS 设得过小:连接池正常扩容时反而报错,业务出现间歇性失败
  • 只改数据库密码不同步更新连接池配置:应用持续重试失败,最终触发账号锁定

数据来源与参考

  • MySQL 8.0 Reference Manual: ALTER USER Statement

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌