一、用戶權限控制
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);