ORACLE控制使用者許可權:
首先使用系統中的擁有DBA許可權的賬號(system)登入;
一、建立使用者:
1、DBA使用creater user語句建立使用者:
--建立登入使用者名稱為:user01,密碼為:user01
create user user01 identified by user01;
此時登入會顯示:
ORA-01045:user USER01 lacks CREATE SESSION privilege;logon denied;
--使用者user01缺乏create session許可權,拒絕登入;
2、然後我們使用grant命令給user01使用者賦予create session許可權,執行以下命令:
--賦予user01使用者create session許可權
grant create session to user01;
此時登入,登入成功,然後我們使用該使用者建立一張表:
create table test_table(
id int,
name varchar2(10)
);
這時顯示:ORA-01031:許可權不足
然後我們給使用者賦予建立表的許可權
grant create table to user01;
此時顯示:ORA-01950:對錶空間 “USERS” 無許可權;
注:接下來的命令需要使用擁有DBA許可權的使用者(system)
--給user01使用者賦予表空間,unlimited(無限制),也可用具體的大小(10M)
alert user user01 quota unlimited on users;
此時再執行建立表語句即可成功;
然後執行查詢語句:
select * from test_tbale;
此時查詢表資料,執行成功(此時表中無資料)
3、修改使用者的部分許可權
此時在user01使用者下修改user02使用者的表空間:
--修改user02的表空間為無限制
alert user user02 quota unlimited on users;
此時顯示:ORA-01301:許可權不足(因為只有系統使用者有許可權修改)
但是自己想要修改自己的部分許可權是可以的:
--修改user01使用者的密碼為user
alert user user01 identified by user;
這時是可以的。
二、建立角色並賦予許可權
建立角色;
為角色賦予許可權;
再將角色賦予使用者;
1、建立角色
create role my_role;
2、為角色賦予許可權:
--為角色my_role賦予登入,建立表,建立檢視,建立儲存過程等許可權
grant create session,create table,create view,create procedure to my_role
3、將角色賦予使用者:
--將角色my_role賦予了使用者user02,user02也就擁有的my_role所擁有的許可權
grant my_role to user02;
三、物件許可權
不同的物件擁有不同的物件許可權;
物件的擁有者擁有所有許可權;
物件的擁有者可以向外分配許可權;
CREATE SESSION |
CREATE TABLE |
CREATE SEQUENCE |
CREATE TABLE |
CREATE VIEW |
1、將scott使用者下的employees表的查詢,修改許可權賦予user01使用者:
grant select,update on sott.employees to user01;
2、with grant option 和 public 關鍵字 -- 使使用者同樣擁有分配的權利
將scott使用者的departments表的查詢許可權賦予user01使用者:
grant select on scott.departments to user01 with grant option;
意思是:使用者user01可以將賦給自己的scott使用者的departments表的查詢許可權再賦予其他的使用者
3、使用scott使用者登入執行以下命令:
grant select,update on locations to public;
意思是:使用者scott將自己的locations表的查詢,修改許可權賦予了所有使用者;
四、收回物件許可權
查詢許可權分配情況(select * from ...)
資料字典檢視 | 描述 |
ROLE_SYS_PRIVS | 角色擁有的系統許可權 |
ROLE_TAB_PRIVS | 角色擁有的物件許可權 |
USER_ROLE_PRIVS | 使用者擁有的角色 |
USER_TAB_PRIVS_MADE | 使用者分配的關於表物件許可權 |
USER_TAB_PRIVS_RECD | 使用者擁有的關於表物件許可權 |
USER_COL_PRIVS_MADE | 使用者分配的關於列的物件許可權 |
USER_COL_PRIVS_RECD | 使用者擁有的關於列的物件許可權 |
USER_SYS_PRIVS | 使用者擁有的系統許可權 |
1、收回使用者user01關於employees表的查詢許可權:
revoke select on employees from user01;
總結:
DCL控制資料庫許可權
此時您已經可以熟練的對資料庫許可權進行相關操作了
語句 | 功能 |
CREATE USER | 建立使用者(通常由DBA完成) |
GRANT | 分配許可權 |
CREATE ROLE | 建立角色(通常由DBA完成) |
ALERT USER | 修改使用者密碼 |
REVOKE | 收回許可權 |