001 概述
默认方式下,任何非授权用户都不能在Oracle数据库中执行任何操作。如果不授予权限,用户甚至不能成功连接。纵然完成了连接,如果不为其授予更多权限,用户仍什么都不能做。
grant命令给用户账户授权
revoke命令撤销权限
默认方式下,只有DBA有权授予任何权限。
权限分为两组:系统权限和对象权限。系统权限通常允许用户执行影响数据字典的操作,对象权限允许用户执行影响数据的操作。
002 系统权限
系统权限约有200种。大多数都应用于影响数据字典的操作,如创建表或用户。其它的影响数据库和实例,如创建表空间、调整实例参数值,或建立会话。一些较常用的权限如下:
创建会话:(create session):允许用户进行连接。否则,用户甚至无法登录到数据库。
受限制的会话(restricted session):如果使用startup restrict启动数据库,或使用alter system enable restricted session进行调整,则仅拥有此权限的用户可以连接。
更改数据库(alter database):允许访问多个修改物理结构所需的命令。
更改系统(alter system):允许控制实例参数和内存结构。
创建表空间(create tablespace):alter tablespace和drop tablespace权限允许用户管理表空间。
创建表(create table)允许被授权人在自己的模式中创建表;包括更改和删除表,在其上运行select和DML命令,以及在其上创建、更改或删除索引。
授予任何对象权限(grant any object privilege):允许被授予人将其本身不拥有的对象的对象权限授予他人,但不能授予自己。
创建任何表(create any table):被授权人可以创建属于其它用户的表。
删除任何表(drop any table):被授权人可以删除属于其他用户的表。
插入任何表、更新任何表、删除任何表(insert any table,update any table,delete any table):被授权人可以对所有其它用户拥有的表执行这些DML命令。
选择任何表(select any table):被授权人可以对数据库中的任何表执行select操作。
如果从用户撤销权限,那么之前用户使用相应权限执行的任何操作仍然完好无缺。另外,如果用户被授予带有admin option的权限,那么即使对其作了撤销,他授予了权限的任何用户将保留权限。不保存系统权限授予者的记录,故不存在撤销级联。
note:系统权限的撤销不会级联(这与撤销对象权限不同)。
003 实验验证
SYS@ORCL> create user hhu identified by hhu;
User created.
SYS@ORCL> grant create session to hhu;
Grant succeeded.
SYS@ORCL> create user hhu0 identified by hhu;
User created.
SYS@ORCL> conn hhu0/hhu
ERROR:
ORA-01045: user HHU0 lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
@> conn hhu/hhu
Connected.
HHU@ORCL> grant create session to hhu0;
grant create session to hhu0
*
ERROR at line 1:
ORA-01031: insufficient privileges
HHU@ORCL> conn / as sysdba
Connected.
SYS@ORCL> grant create session to hhu admin option;
grant create session to hhu admin option
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
SYS@ORCL> grant create session to hhu with admin option;
Grant succeeded.
SYS@ORCL> conn hhu/hhu
Connected.
HHU@ORCL> grant create session to hhu0;
Grant succeeded.
HHU@ORCL> conn hhu0/hhu
Connected.
HHU0@ORCL> conn / as sysdba
Connected.
SYS@ORCL> revoke create session from hhu;
Revoke succeeded.
SYS@ORCL> conn hhu0/hhu
Connected.
HHU0@ORCL> conn hhu/hhu
ERROR:
ORA-01045: user HHU lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
@> conn / as sysdba
Connected.
SYS@ORCL> grant restricted session to hhu;
Grant succeeded.
SYS@ORCL> grant alter database to hhu;
Grant succeeded.
SYS@ORCL> grant create session to hhu;
Grant succeeded.
SYS@ORCL> grant create tablespace to hhu;
Grant succeeded.
SYS@ORCL> grant create table to hhu;
Grant succeeded.
SYS@ORCL> grant grant any object privilege to hhu;
Grant succeeded.
SYS@ORCL> grant create any table to hhu;
Grant succeeded.
SYS@ORCL> grant drop any table to hhu;
Grant succeeded.
SYS@ORCL> grant insert any table,update any table,delete any table to hhu;
Grant succeeded.
SYS@ORCL> grant select any table to hhu;
Grant succeeded.