1. 用户
1.1 默认用户
- SYS:数据库中所有数据字典表和视图都存储在 SYS 模式中。SYS 用户主要用来维护系统信息和管理实例;
- SYSTEM:SYSTEM 是默认的系统管理员,该用户拥有 Oracle 管理工具使用的内部表和视图。通常通过 SYSTEM 用户管理数据库用户、权限和存储等;
- SCOTT:SCOTT 用户是 Oracle 数据库的一个示范账户,在数据库安装时创建。
1.2 创建用户
要连接到Oracle数据库,就需要创建一个用户帐户,每个用户都有一个默认表空间和一个临时表空间。CREATE USER命令用于创建新用户,语法如下:
1 | -- 创建指定用户名和密码的用户 |
1.3 profile 管理用户
profile 即为概要文件,每个用户都会属于一个概要文件。概要文件记录着当前用户会话存储空间大小、口令有效期等信息。当创建用户的时候,如果没有指定 profile,那么 Oracle 把名字叫 default 的 profile 赋予给用户。
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 | -- 指定 profile |
第二种方式则修改用户的 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 | GRANT privilege [,privilege…] |
说明:包含了WITH ADMIN OPTION,只能是系统权限。
收回权限语法如下(不支持级联收回):
1 | REVOKE privilege [,privilege…] |
2.1.2 示例
常用示例如下所示:
1 | -- 1. 授予用户登录权限 |
2.2 对象权限
2.2.1 语法
授予权限语法如下:
1 | GRANT object_privilege [columns…] |
回收权限语法如下(支持级联收回):
1 | REVOKE privilege ON object FROM user [,user|role, PUBLIC…] |
2.2.2 示例
常用示例如下所示:
1 | -- 授予用户查询指定表的权限 |
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] |