现在的位置: 首页 > 综合 > 正文

Oracle 的用户管理

2013年09月17日 ⁄ 综合 ⁄ 共 2048字 ⁄ 字号 评论关闭

Oracle 的用户访问控制

1、权限
Oracle 数据库安全分为:
系统安全
数据安全

系统权限:访问数据库的权限
对象权限:操作数据库对象的内容

schema:对象的集合。如表、视图、索引等。

schema 举例:

scott user 下的 table、index、sequence、view 等数据库对象统称为 scott schema。

schema 和 user 的关系:一一对应。
在 oracle 中创建一个 user,就会创建一个以该 user 命名的 schema,以后通过该 schema
来管理该 user 下的对象。
描述 select * from scott.emp;
访问 scott schema 下的 emp 对象

scott user 下的所有对象集合称为 scott schema

2、Oracle 系统权限:

166 种以上的权限
DBA 拥有最高的系统权限,典型的权限包括:
创建用户
删除用户
删除表
备份表
......

2.1 创建用户

[oracle@centos1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 31 16:43:53 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create user test identified by test;

User created.

SQL> conn test/test;
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.

2.2 用户的系统权限

创建用户后,用户是没有任何系统权限的,DBA 可以为这个用户授予特殊的系统权限:
开发人员可能需要如下系统权限:
create session
create table
create sequence
create view
create procedure

语法: grant privilege [,privilege...] to user [,user]

SQL> grant create session to test;

Grant succeeded.

SQL> conn test/test;
Connected.

SQL> create table t1 ( id number(4));
create table t1 ( id number(4))
*
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> conn / as sysdba
Connected.
SQL> grant create table to test;
Grant succeeded.

SQL> alter user test quota unlimited on users;
User altered.

SQL> conn test/test
Connected.
SQL> create table t1 ( id number(4));
Table created.

3、角色

Oracle 引入 role 概念是为了简化权限管理。

举例:如果把 create table\create view\create session\create sequence 四个权限
分配给3 个user,如果不引入 role,则需要一一分配 12 次。
如果引入 role dev,可以把这四种权限授予 dev role,然后把 dev role 一一分配给
这 3 个 user,这样只需执行 3 次分配即可。

创建角色

SQL> create role dev;

Role created.

为角色授予权限
SQL> grant create table,create view,create session to dev;

Grant succeeded.

将角色分配给用户
SQL> grant dev to test;

Grant succeeded.

修改 user 密码

SQL> grant dev to test;

Grant succeeded.

对象权限:
对象 table
view sequence
procedure
ALTER YES
YES
DELETE YES
YES
EXECUTE YES
INDEX YES
INSERT           YES YES
REFERENCES YES
SELECT YES
YES
UPDATE         YESYES

对象权限的授权

GRANT OBJECT_PRIV ON OBJECT TO [USER|ROLE|PUBLIC] WITH GRANT OPTION

示例:

SQL> grant select on scott.emp to test;

Grant succeeded.

SQL> grant select on scott.dept to dev,test;

Grant succeeded.

抱歉!评论已关闭.