0%

oracle 11g 的用户和权限管理

1. 用户

1.1 默认用户

  • SYS:数据库中所有数据字典表和视图都存储在 SYS 模式中。SYS 用户主要用来维护系统信息和管理实例;
  • SYSTEM:SYSTEM 是默认的系统管理员,该用户拥有 Oracle 管理工具使用的内部表和视图。通常通过 SYSTEM 用户管理数据库用户、权限和存储等
  • SCOTT:SCOTT 用户是 Oracle 数据库的一个示范账户,在数据库安装时创建。

1.2 创建用户

要连接到Oracle数据库,就需要创建一个用户帐户,每个用户都有一个默认表空间和一个临时表空间。CREATE USER命令用于创建新用户,语法如下:

1
2
-- 创建指定用户名和密码的用户
create user [username] identified by [password];

1.3 profile 管理用户

profile 即为概要文件,每个用户都会属于一个概要文件。概要文件记录着当前用户会话存储空间大小、口令有效期等信息。当创建用户的时候,如果没有指定 profile,那么 Oracle 把名字叫 defaultprofile 赋予给用户。

1.3.1 profile 创建

下面我们创建一个 profile,并对口令进行指定的限制。比如用户只能最多输入 3 次密码,超过限制则会锁定 2 天:

1
create profile [profile name] limit failed_login_attempts 3 password_lock_time 2;

当然能够锁定,也就可以进行解锁,语句如下:

1
alter user [username] account unlock;

1.3.2 设置 profile

第一种方式是在创建用户的时候设置指定的 profile,可以通过如下语句指定 profile:

1
2
-- 指定 profile
create user [username] identified by [password] profile [profile name];

第二种方式则修改用户的 profile,如下所示:

1
alter user [username] profile [profile name];

1.3.3 删除 profile

删除 profile 之后,用户的 profile 会变回名为 default 的 profile:

1
drop profile [profile name] cascade;

1.4 更改和删除用户

  • ALTER USER 命令可用于更改口令
1
alter user [username] identified by [password]
  • DROP USER 命令用于删除用户
1
drop user [username]

2. 权限

权限指的是执行特定命令或访问数据库对象的权利。权限有两种类型,系统权限和对象权限。

  • 系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限;

  • 对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作。

2.1 系统权限

2.1.1 语法

授予权限语法如下

1
2
3
GRANT privilege [,privilege…]
TO user [, user|role, PUBLIC…]
[WITH ADMIN OPTION];

说明:包含了WITH ADMIN OPTION,只能是系统权限。

收回权限语法如下(不支持级联收回)

1
2
REVOKE privilege [,privilege…]
FROM user [, user|role, PUBLIC…]

2.1.2 示例

常用示例如下所示:

1
2
3
4
5
6
7
8
-- 1. 授予用户登录权限
grant create session to [username];

-- 2. 授予创建表的权限
grant create table to [username];

--3. 授予表空间内的所用权限
grant unlimited tablespace to [username];

2.2 对象权限

2.2.1 语法

授予权限语法如下:

1
2
3
GRANT object_privilege [columns…]
ON object TO user [,user|role, PUBLIC…]
[WITH GRANT OPTION];

回收权限语法如下(支持级联收回):

1
REVOKE privilege ON object FROM user [,user|role, PUBLIC…]

2.2.2 示例

常用示例如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
-- 授予用户查询指定表的权限
grant select on scott.emp to [username];

-- 授予用户更新指定表的权限
grant update on scott.emp to [username];

-- 授予用户所有表操作权限
grant all on scott.emp to [username];

-- 授予精确到列上的权限
-- 允许用户更新 emp 表中的ename、sal列
grant update(ename, sal) on scott.emp to [username]

3. 角色

角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,以简化权限管理。

  • 创建角色,创建角色CREATE ROLE,应该具有CREATE ROLE系统权限:
1
create role [role name]
  • 授予角色权限,可以是系统权限或者对象权限:

GRANT privilege TO ROLE

1
grant create session, create table to [rolename]
  • 将角色授予用户:

GRANT role to USER

1
grant [rolename] to [username]
  • 从用户收回角色
1
revoke [rolename] from [username]
------ 本文结束------