基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
ALTER USER
更新时间:2026-09-09 10:31:44
描述
该语句主要用于执行以下操作:
修改 OceanBase 数据库用户的密码。
锁定或者解锁用户,且被锁定的用户不允许登录数据库。
说明
除了修改当前用户的口令之外,必须拥有
CREATE USER的权限,才可以执行本命令。设置用户在登录时默认激活的角色。
修改用户的资源选项。
使用限制及注意事项
SET PASSWORD/ALTER USER改密后,旧密码快速认证缓存失效,旧密码无法再登录。- 认证串格式校验:
IDENTIFIED AS/BY PASSWORD,校验$S$格式,拒绝$A$(sha2)等错误格式。 - 标准 MySQL Connector 可以连接使用
caching_sha2_password认证插件的用户。 ob_sm3_password为 OceanBase 特有认证插件,标准 MySQL Connector / 未适配的 ODP 可能无法完成使用该认证插件的用户的连接。
权限要求
执行 ALTER USER 语句需要当前用户具备 CREATE USER 管理权限。有关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
语法
修改用户密码:
ALTER USER 'user_name' IDENTIFIED [WITH auth_plugin] BY 'password' | IDENTIFIED [WITH auth_plugin] AS 'auth_string' auth_plugin: mysql_native_password | caching_sha2_password | ob_sm3_password修改用户密码并保留当前密码(双密码场景,自 V4.4.2 BP1 起):
ALTER USER 'user_name' IDENTIFIED BY 'password' RETAIN CURRENT PASSWORD;丢弃已保留的旧密码(自 V4.4.2 BP1 起):
ALTER USER 'user_name' DISCARD OLD PASSWORD;锁定用户:
ALTER USER 'user_name' [ACCOUNT LOCK | ACCOUNT UNLOCK];设置用户在登录时默认激活的角色:
ALTER USER user_name DEFAULT ROLE {NONE | ALL | role_name [, role_name ...]};修改用户的资源选项:
ALTER USER user_name WITH resource_option [resource_option]; resource_option: MAX_CONNECTIONS_PER_HOUR integer | MAX_USER_CONNECTIONS integer
参数解释
| 参数 | 描述 |
|---|---|
| user_name | 指定用户名称。 |
| auth_plugin | 用于指定用户身份验证的方式(认证插件),详细介绍可参见下文 auth_plugin。 |
| password | 指定新密码。 |
| IDENTIFIED WITH auth_plugin AS 'auth_string' | 将账户身份验证插件设置为 auth_plugin,并将 auth_string 值存储在 mysql.user表中。如果插件需要哈希字符串,则假定该字符串已经是插件所需的哈希格式。
注意
|
| ACCOUNT LOCK | 指定锁定用户。 |
| ACCOUNT UNLOCK | 指定解锁用户。 |
| NONE | 指定停用用户被授予的所有角色。 |
| ALL | 指定激活用户下所有的角色。 |
| role_name | 指定角色的名称,激活多个角色时,角色名用英文逗号(,)隔开。 |
| resource_option | 指定用户的资源选项,指定多个资源选项时,使用英文空格隔开。
|
| RETAIN CURRENT PASSWORD | 与 IDENTIFIED BY 联用:设置新密码的同时保留旧密码,进入双密码状态。
说明本功能从 V4.4.2 BP1 版本开始支持。 |
| DISCARD OLD PASSWORD | 丢弃已保留的旧密码,仅保留当前密码。
说明本功能从 V4.4.2 BP1 版本开始支持。 |
auth_plugin
mysql_native_password:传统的密码认证插件,使用 SHA-1 哈希算法。caching_sha2_password:基于 SHA-256 的密码认证插件,具有更高的安全防护等级。说明
对于 V4.4.2 版本,从 V4.4.2 BP2 版本开始支持认证插件
caching_sha2_password。ob_sm3_password:该插件在认证协议与状态机上完全复用caching_sha2_password(AuthSwitch、快速认证/完整认证、TLS/RSA 传密),但算法与元数据保持独立,使用 SM3 哈希算法替代 SHA-256,用于密码存储与认证校验。说明
对于 V4.4.2 版本,从 V4.4.2 BP3 版本开始支持认证插件
ob_sm3_password。
示例
执行以下命令将用户
sqluser01的密码修改为******。obclient> ALTER USER 'sqluser01' IDENTIFIED BY '******';将用户
sqluser01的密码修改为NewSecret,并保留改密前的旧密码(双密码)。obclient> ALTER USER 'sqluser01'@'%' IDENTIFIED BY 'NewSecret' RETAIN CURRENT PASSWORD;在业务切换完成后丢弃旧密码。
obclient> ALTER USER 'sqluser01'@'%' DISCARD OLD PASSWORD;指定使用 mysql_native_password 身份验证插件。
ALTER USER 'sqluser01' IDENTIFIED WITH mysql_native_password AS '******';指定使用 caching_sha2_password 身份验证插件。
ALTER USER 'sqluser02' IDENTIFIED WITH caching_sha2_password BY '******';锁定用户
obsqluser01。obclient> ALTER USER 'obsqluser01' ACCOUNT LOCK;解锁用户
obsqluser01。obclient> ALTER USER 'obsqluser01' ACCOUNT UNLOCK;指定用户
user001在登录时,默认激活用户被授予的role001和role002角色。ALTER USER user001 DEFAULT ROLE role001, role002;直接写入已序列化的认证串(
$S$...)。obclient> ALTER USER user001 IDENTIFIED WITH ob_sm3_password AS '$S$005$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.';