#ALTER USER
# 通用描述
ALTER USER用于修改用户属性,包括密码、默认表空间等,YashanDB的用户管理体系请参考用户管理。
在容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE)中,如需修改全局用户的属性建议连接根容器操作,其中更新密码以及使密码过期则必须连接根容器操作。
# 语句定义
alter user::=
# 1. user_name
已存在的用户名。
如果用户名中包含特殊符号(下划线除外),例如@、/、.、!、$、'等,指定时需使用双引号包围,确保解析成功。
# 2. VALUES
该语句用于指定按密文修改用户的密码,若省略则按明文修改密码。
YashanDB的密码策略为加密传输和加密存储,即服务端存储的是密文密码。在某些特定场景(例如数据库迁移),可通过直接指定密文来修改密码,该操作不影响用户前端输入明文密码登录。
# 3. password
为用户指定的新密码,新密码需遵循与CREATE USER中一致的password要求。
# 4. tablespace
为用户指定默认表空间。
# 5. tablespace_set
为用户指定默认表空间集,使用规则同CREATE USER。
# 6. PASSWORD EXPIRE
使用户密码失效,用户密码失效后,用户无法登录,需要重新设置密码后方可登录。
# 7. ACCOUNT (LOCK|UNLOCK)
锁定/解锁用户,锁定后该用户将不可登录。
对于容器数据库中的全局用户,若连接根容器进行锁定操作只能全局锁定,即连接根容器且指定CONTAINER = ALL。
# 8. PROFILE profilename
为用户指定新的profile,通过DBA_PROFILES视图可查询所有profile及其内容。如需新建profile请查阅CREATE PROFILE。
# 9. quota_clause
使用规则同CREATE USER中的quota_clause。
# 10. CONTAINER
该语句仅适用于容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE),用于指定当前操作的容器作用域,可指定全局生效或当前容器本地生效,省略时默认为本地生效。
CONTAINER属性可选值如下:
CURRENT:表示仅在当前所连接的容器本地生效,直连PDB时只能指定为该值。
ALL:表示全局生效,仅连接根容器时可用。
示例
ALTER USER sales1 IDENTIFIED BY "23%ad1";
ALTER USER sales2 DEFAULT TABLESPACE users;
ALTER USER sales3 PASSWORD EXPIRE;
ALTER USER sales3 ACCOUNT UNLOCK;
ALTER USER sales3 PASSWORD EXPIRE ACCOUNT LOCK;
ALTER USER sales3 PROFILE DEFAULT;
示例(单机/共享集群/分布式集群部署)
ALTER USER sales3 quota 100M ON tablespace1;
ALTER USER c##sale1 PROFILE c##prof_all;

