一、用户权限控制 1.创建用户 create user user_name identified by password 例如: create user zhangsan identified by zhangsan; 2.删除用户 drop user zhangsan cascade; //解锁用户 alter user scott account unlock //改密码 alter user scott identified by 新密码
3.赋予权限
grant privilege to user;
例如:把建表 建序列 建视图的权限赋给zhangsan
grant create table, create sequence,create view to zhangsan;
//把connect角色和resource角色赋给zhangsan
//角色是一组权限的集合
grant connect,resource to zhangsan;
注意: 如果只是登陆oracle数据库的话 需要的权限是create session
//只能更新一列,只能是插入和更新可以控制到列
grant update(name) on mytable to lisi;
4.权限能够传递
4.1、系统权限的传递
超级管理员授予lisi修改任意表的管理权限:
SQL>grant alter any table to lisi with admin option;
授权成功。
查看lisi用户的系统权限:
SQL>select * from user_sys_privs;
lisi用户授予wangwu用户任意表的权限:
SQL>grant alter any table to wangwu with admin option;
授权成功。
查看wangwu用户的系统权限:
SQL>select * from user_sys_privs;
4.2、对象权限的传递(谁拥有谁授权)
用管理员创建一个表A:
SQL>create table A(id int);
表已创建。
把表A的查看权限授予给lisi:
SQL>grant select on A to lisi with grant option;
授权成功。
查看lisi用户的对象权限:
SQL>select * from user_tab_privs;
lisi用户把查看sys.A表的权限授予给wangwu用户:
SQL>grant select on sys.A to wangwu;
授权成功。
查看wangwu的对象权限:
SQL>select * from user_tab_privs;
让wangwu用户也有授予查看sys.A表的权限:
SQL>grant select on sys.A to wangwu with grant option;
授权成功。
查看wangwu的对象权限:
SQL>select * from user_tab_privs;
5.修改密码
alter user user_name identified by password;
例如:
alter user zhangsan identified by zhangsan123;
6.赋予某一个用户某种对象操作的权限
grant operator on object to user;
例如:
grant select
on t_user
to briup;
7.回收权限
revoke operator on object from user;
例如:
revoke select
on t_user
from briup;
8.角色的创建:
SQL> create role myrole;
角色已创建。
赋予角色创建表的权限
SQL> grant create table to myrole;
授权成功。
创建用户,用于将角色赋给用户
SQL> create user zhangsan identified by zhangsan;
用户已创建。
给角色创建会话的权限,也就是连接数据库的权限
SQL> grant create session to myrole;
授权成功。
将角色赋给用户,使得用户拥有角色的权限,这就像我们平时使用的sys一样,也是一个角色
SQL> grant myrole to zhangsan;
授权成功。
这样,张三用户就有了myrole角色所拥有的登录数据库的权限了
注意:在授权时,不能将unlimited tablespace 授予角色,角色是大家共用的
操作时没有drop table,但是有drop any table;
没有alter table,但是有alter any table
create table--可以给自己创建表
create any table----还可以给其他用户创建
例如:当前用户为wangwu,具有create any table ,并且lisi具有unlimited tablespace 权限
则可以这样创建表:create table lisi.A (id int);