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 收回許可權