首批通过分布式安全可靠测评,为关键业务系统打造
ALTER USER
更新时间:2026-04-07 20:57:20
描述
该语句主要用于执行以下操作:
修改数据库用户的密码。
修改数据库用户使用的 Profile。
修改数据库用户连接的加密方式,其它修改用户密码方式,请参见 SET PASSWORD。
修改数据库用户拥有角色的默认角色。
权限要求
除了当前用户可以执行的修改命令外,其他用户必须拥有 ALTER USER 权限,才可以执行本命令修改其他用户的信息。有关 OceanBase 数据库权限的详细介绍,请参见 Oracle 模式下的权限分类。
使用限制
使用代理用户代理目标用户连接数据库时,当前仅支持通过 OBClient 连接数据库,并且要求 OBClient 版本为 V2.2.6 及之后版本。暂不支持 Java 驱动和 C 驱动连接数据库。
语法
ALTER USER user_name
{ IDENTIFIED BY password
| PROFILE {"profile_name" | DEFAULT}
| REQUIRE {NONE | SSL | x509 | tls_option_list}
| DEFAULT ROLE
{ role_name[,role_name...]
| ALL [EXCEPT role_name[,role_name...]]
| NONE
}
| GRANT CONNECT THROUGH proxy_user_name [with_clause]
};
tls_option_list:
tls_option
| tls_option_list tls_option
tls_option:
CIPHER str_value
| ISSUER str_value
| SUBJECT str_value
with_clause:
WITH ROLE {role_name[, role_name,...]}
| WITH NO ROLE
| WITH ROLE ALL EXCEPT {role_name[, role_name,...]}
参数解释
| 参数 | 描述 |
|---|---|
| user_name | 指定用户名或者被代理的目标用户名。 |
| IDENTIFIED BY | 指定用户新密码。 |
| PROFILE | 指定用户使用的的 Profile。
|
| REQUIRE | 指定用户使用的加密协议为 NONE、SSL、X509 和 tls_option_list 中的一种。 |
| DEFAULT ROLE | 指定用户登录时的默认角色。
|
| GRANT CONNECT THROUGH | 指定使用代理用户。更多有关使用代理用户的示例信息,请参见 使用代理用户。 |
| proxy_user_name | 代理用户名。授权后,该用户能代表目标用户连接数据库,并使用目标用户的角色权限执行数据库操作。 |
| with_clause | 指定代理用户代理目标用户连接数据库时生效的角色权限。如果不指定该子句,则默认代理用户代理目标用户连接数据库时,目标用户的所有角色权限均生效。详细介绍可参见下文 with_clause。 |
with_clause
注意
指定代理用户生效的角色权限时,对于带密码的角色权限,需要在连接数据库后手动通过 SET ROLE role_name IDENTIFIED BY role_password; 命令激活该角色。
WITH ROLE {role_name[, role_name,...]}:指定代理用户代理目标用户连接数据库时,自动获取并激活指定的角色权限,即仅生效目标用户中指定的角色权限。WITH NO ROLE:指定代理用户代理目标用户连接数据库时,不会自动获取目标用户的任何角色权限,即目标用户的所有角色权限均不生效。WITH ROLE ALL EXCEPT {role_name[ ,role_name,...]}:指定代理用户代理目标用户连接数据库时,自动获取并激活目标用户中除指定角色之外的其他所有角色权限。
示例
修改用户
user1的密码。obclient> ALTER USER user1 IDENTIFIED BY ******; Query OK, 0 rows affected修改用户
user1连接加密协议为SSL。obclient> ALTER USER user1 REQUIRE SSL; Query OK, 0 rows affected修改用户
user1使用的的 Profile 为profile1。obclient> ALTER USER user1 PROFILE "profile1"; Query OK, 0 rows affected设置用户
user1的默认角色。obclient> CREATE ROLE role1; Query OK, 0 rows affected obclient> CREATE ROLE role2 IDENTIFIED BY ******; Query OK, 0 rows affected obclient> CREATE ROLE role3 IDENTIFIED BY ******; Query OK, 0 rows affected obclient> GRANT role1,role2,role3 TO user1; Query OK, 0 rows affected obclient> ALTER USER user1 DEFAULT ROLE role1; Query OK, 0 rows affected说明
用户
user1可以直接使用role1的权限。role2和role3的权限需要用户user1在会话中启用role2和role3后,用户user1才能使用其权限。有关启用角色命令的详细信息,请参见 SET ROLE。