当刚新建立用户时,用户没有任何权限,也不能执行任何操作。
如果要执行某种特定的数据库操作
,则必须为其授予系统权限
;
如果用户要访问方案的对象
,则必须为其授予对象权限
。
系统权限
是指执行特定类型Sql命令的权利,它用于控制用户可以执行的一个或是一组数据库操作。
Oracle
11G提供了200多种系统权限,可以查询数据字典视图system_privilege_map
显示所有系统权限
sql>select * from system_privilege_map order by name;
显示用户拥有系统权限
SQL> select grantee,privilege from dba_sys_privs where grantee=upper('tom');
常用的系统权限
权限名称 说明
create session 连接数据库
create view 创建视图
create procedure 创建过程、函数、包
create cluster 建簇
create table 创建表
create public synonym 创建同义词
create trigger 创建触发器
授权语法
GRANT 权限名 TO 用户|角色|PUBLIC
PUBLIC表示将权限赋给数据库中所有的用户
SQL>GRANT CREATE TABLE TO USER1;
SQL>GRANT CREATE TABLE,CREATE VIEW TO USER1,USER2 WITH ADMIN OPTION;
案例:
创建两个用户ken,tom,初始阶段他们没有任何权限,如果登录就会给出错误信息。
sql>create user ken identified by m123;
sql>create user tom identified by m123;
1)给用户ken授权
sql>grant create session,create table to ken with admin option;
sql>grant create view to ken;
2)给用户tom授权
可以通过ken给tom授权,因为with admin option是加上的。当然也可通过DBA给tom授权,我们测试就用ken给tom授权。
sql>grant create session,create table to tom with admin option;
sql>grant create view to tom ##这个会报错,因为Ken没有该权限的下放权限。
回收系统权限
系统权限不可以级联回收的
sql>revoke create session from ken;
回收了Ken的登录权限,Ken就不能再登录,虽然Ken下放的该权限给tom,但tom还是可正常登录的