用户(User)
用户是用于 资源管理 和 权限控制 的一个概念。
-- 创建用户的语法
CREATE USER name
IDENTIFIED BY password -- 一个用户,至少拥有用户名和密码
[DEFAULT TABLESPACE users] -- 指定此用户下数据默认保存位置,如果不指定,默认为 Users 表空间
[TEMPORARY TABLESPACE temp] -- 指定临时表空间,默认为 temp 表空间
[QUOTA 100M/unlimited ON USERS] -- 在表空间上有多少空间的使用权力,默认为 0, unlimited 表示无上限
[ACCOUNT LOCK/UNLOCK] -- 账号的初始状态:锁定/未锁定,默认为未锁定
[PASSWORD EXPIRE] -- 账号的初始状态:强制要求重设密码,默认不强制
[PROFILE DEFAULT] -- 指定使用的资源文件,默认是 default
;
-- 修改用户的语法
ALTER USER name [跟创建用户的参数是一样的];
-- 删除用户的语法
DROP USER name [cascade];
为了对用户行为有更精细的控制,需要使用 资源文件 (profile
)。 资源文件是口令限制、资源限制的命名集合。
-- 增加资源文件的语法
CREATE PROFILE name LIMIT
RESOURCE_参数 n/unlimited/default -- 控制的是资源的占用
PASSWORD_参数; -- 控制的是密码的使用
-- 修改资源文件的语法
ALTER PROFILE name ...;
-- 删除资源文件的语法
DROP PROFILE name;
-- 为用户指定资源文件
ALTER USER name PROFILE profile_name;
常用资源文件选项:
名字 | 类型 | 介绍 |
---|---|---|
SESSIONS_PER_USER | resource | 每个用户最多能创建的连接数 |
CONNECT_TIME | resource | 每个连接最多能保持的时间(分钟) |
IDLE_TIME | resource | 每个连接不操作多长时间自动断开(分钟) |
CPU_PER_SESSION | resource | 每个连接最多能占用的 CPU 时间(百分之一秒) |
LOGICAL_READS_PER_SESSION | resource | 每个连接最多能读取的数据块 |
PRIVATE_SGA | resource | 最多占用的 SGA 大小 |
PASSWORD_LIFE_TIME | password | 限制指定时间中必须重新修改密码(天) |
PASSWORD_REUSE_TIME/MAX | password | 密码重用的限制 |
FAILED_LOGIN_ATTEMPTS | password | 允许的密码输错次数 |
PASSWORD_LOCK_TIME | password | 因输错密码锁定的天数(天) |
PASSWORD_VERIFY_FUNCTION | password | 用于自定义密码验证 |
操作示例:
-- 所有的用户信息,保存在字典表 dba_users 里面
select * from dba_users where USERNAME='VIP';
-- 所有的资源文件信息,保存在 dba_profiles 里面
select * from dba_profiles where profile='DEFAULT';
-- 创建用户的最基本语句,需要用户名和密码
-- 其他属性采用的都是默认值
create user vip identified by vip;
-- 再一个稍微复杂一点的创建语句
create user vip
identified by vip
default tablespace users
temporary temporary temp
quota unlimited on users
password expire;
-- 在实际环境中,一个良好的习惯是:
-- 为我们新建的用户创建独立的表空间
create tablespace db_vip
datafile 'd:/db_vip.dbf'
size 50m;
create user vip
identified by vip
default tablespace db_vip
quota unlimited on db_vip
password expire;
-- 如果想对用户做一些限制
-- 需要为它创建相应的资源文件
create profile vip_profile limit
failed_login_attempts 3
password_life_time unlimited
sessions_per_user 2;
-- 将资源文件分配给用户,也可以在创建用户的时候指定
alter user profile vip_profile;