用户权限


用户是用于 资源管理 和 权限控制

安装完 Oracle,缺省有两个用户:

SYS

  1.  用户,又叫数据库系统管理员、特权用户,数据库中至高无上的存在。
  • 它是数据库的系统管理员,负责数据库的安装、维护、升级、备份、恢复、优化等操作。
  • 在它之下,保存着数据库所有的系统字典。
  • 不能用 normal 身份登录,必须用 SYSDBA/SYSOPER 身份登录。

SYSTEMSCOTT

新创建的用户,是不能做任何事情的(甚至不能登录)。 必须要为用户授予权限,才能做相应的事情。 可以说,用户是权限的容器。

权限分为两种:

  1. 系统权限。执行特定命令和实施特定行为的权限。
  2. 对象权限。作用在某个数据库对象上的权限,包括对对象的增删改查。
  3. 角色。为了方便管理,将若干系统权限打包统一分配,称之为角色。


4.1



-- 创建用户的语法
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;
权限(Privilege)
权限指的是执行特定命令或访问数据库对象的权利,分为系统权限和对象权限。
-- 授权
-- with admin option 可以允许获得权限的用户可以将这个权限继续授予别人
GRANT 权限 [ON 对象] TO 谁 [WITH ADMIN OPTION];

-- 撤销授权
REVOKE 权限 FROM 谁;

-- 创建角色
CREATE ROLE 角色名;
最小权限原则