日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

转:Oracle 權限 (privileges)

發(fā)布時間:2024/5/24 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 转:Oracle 權限 (privileges) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先還是先建立測試用的資料
測試用Tablespace demots
測試用User demouser
測試用Table demouser.AAA

## 建立測試用 Tablespace demots ##
Create tablespace DEMOTS datafile '/u2/oradb/oradata/orcl/test1-01.dbf' size 10M;

## 建立測試用user demouser ##
create user DEMOUSER identified by DEMOUSER
default tablespace DEMOTS
temporary tablespace TEMP;
grant create session,create table to DEMOUSER;
grant resource to DEMOUSER;
grant drop any table to DEMOUSER;

## 建立測試用Table AAA ##
conn demouser/demouser
create table AAA (
name char(6),
salary number(6),
note varchar(20));

insert into AAA values('James','60000','HaHa');
insert into AAA values('Peter','50000','HaHa2');
insert into AAA values('Nancy','40000','HaHa3');
insert into AAA values('Mary','30000','HaHa4');
insert into AAA values('Bill','30000','HaHa5');
insert into AAA values('Joe','30000','HaHa6');

一些針對 privileges 常用的 view
The views for Oracle object privileges
USER_TAB_PRIVS
ALL_TAB_PRIVS
ROLE_TAB_PRIVS
DBA_TAB_PRIVS

USER_ROLE_PRIVS
ALL_ROLE_PRIVS
ROLE_ROLE_PRIVS
DBA_ROLE_PRIVS

Additionally there are Oracle object privileges that pertain to the whole system called system privileges.
USER_SYS_PRIVS
ALL_SYS_PRIVS
ROLE_SYS_PRIVS
DBA_SYS_PRIVS

Then the VIEWS that contain information about the users in the database are:
USER_USERS
ALL_USERS
DBA_USERS

系統(tǒng)權(quán)限 System Privilege
系統(tǒng)權(quán)限包含能建立各種資料庫物件,修改資料庫組態(tài),及大範(fàn)圍的權(quán)力如 drop any table,預(yù)設(shè)只有DBA可以授予系統(tǒng)權(quán)限。

語法
grant provilege [, privilege, ...]
to username [,username]
[with admin option];

物件權(quán)限 Object Privilege
明確的授予使用者可以在可以在哪些schema object上做哪些動作,如使用者 B 可以在使用
者A上的物件作select的動作。

語法
grant privilege [,privilege, ...] | ALL [(column[, column, ...])]
on objectname
to user | role | public
[with grant option];

## 查詢所有 System Privileges ##
select DISTINCT PRIVILEGE from DBA_TAB_PRIVS;

## 查詢已經(jīng)被授 System Privilege 的使用者 ##
select distinct GRANTEE from DBA_SYS_PRIVS order by GRANTEE;
select * from DBA_SYS_PRIVS where GRANTEE='DEMOUSER';

## 查詢已經(jīng)被授 Object Privilege 的使用者 ##
select distinct GRANTEE from DBA_TAB_PRIVS order by GRANTEE;
select * from DBA_TAB_PRIVS where GRANTEE='DEMOUSER';

以上的查詢可以得知帳號DEMOUSER有被授予 System Privilege 但未被授予 Object Privilege,因為TABLE AAA 是屬於帳號DEMOUSER的Object。

## 建立使用者 testuser,來存取demouser的object ##
create user TESTUSER identified by TESTUSER;
grant connect, create session to TESTUSER; --#授予可以連sqlplus的系統(tǒng)權(quán)限。
grant select on DEMOUSER.AAA to TESTUSER; --#授予可以select DEMOUSER.AAA 的物件權(quán)限。

測試一下testuser是否可以 select 資料
conn testuser/testuser
SQL> select * from DEMOUSER.AAA;

NAME SALARY NOTE
------ ---------- --------------------
James 60000 HaHa
Peter 50000 HaHa2
Nancy 40000 HaHa3
Mary 30000 HaHa4

再來看一看 testuser 所被授予的物件權(quán)限
SQL> conn / as sysdba

SQL> show user;
USER is "SYS"

SQL> select GRANTEE,OWNER,PRIVILEGE from DBA_TAB_PRIVS where GRANTEE='TESTUSER';
GRANTEE OWNER PRIVILEGE
--------------- --------------- ---------------
TESTUSER DEMOUSER SELECT

使用者權(quán)限概念差不多了,接下來就是角色了,以下方向為建立一個使用者,給他可以連SQLPLUS的系統(tǒng)權(quán)限,但不給她物件權(quán)限而是給他角色,讓她達到可以select DEMOUSER.AAA的目的,這次就把系統(tǒng)權(quán)限授予給角色,使用者就可以不用建立系統(tǒng)權(quán)權(quán)限也可以用SQLPLUS囉。

## 建立使用者 ROLEUSER,授予 ROLE_AAA 角色,來存取demouser的object ##
conn / as sysdba
create user ROLEUSER identified by ROLEUSER;

## 建立角色 ROLE_AAA
create role ROLE_AAA not identified;
grant connect, create session to ROLE_AAA; <= 這次就把系統(tǒng)權(quán)限授予給角色。
grant select on DEMOUSER.AAA to ROLE_AAA;

## 將角色授予給ROLEUSER
grant ROLE_AAA to ROLEUSER;

## 切換到ROLEUSER測試 select 的功能。
conn ROLEUSER/ROLEUSER
select * FROM DEMOUSER.AAA;

## 再給一個物件權(quán)限,來達到使用者ROLEUSER可以update 表格DEMOUSER.AAA 的目的。
conn / as sysdba
grant update on DEMOUSER.AAA to ROLEUSER;

## 切換到ROLEUSER做測是 update 的功能。

SQL> conn ROLEUSER/ROLEUSER
SQL> update DEMOUSER.AAA set NAME='Man' where NAME='Joe';

1 row updated. <== 有update成功

當(dāng)然角色也可以授予系統(tǒng)權(quán)限,請各看官自己試試看囉。

一些查詢授予權(quán)限的範(fàn)例。
## 查詢所有系統(tǒng)權(quán)限 System Privileges ##
select distinct name from system_privilege_map;
SELECT DISTINCT privilege FROM dba_sys_privs;

## 查詢已經(jīng)被授 System Privileges 的使用者 ##
select distinct GRANTEE from dba_sys_privs order by GRANTEE;
select * from dba_sys_privs where GRANTEE='ROLEUSER';

## 查詢已經(jīng)被授 Object Privileges 的使用者 ##
select distinct GRANTEE from dba_tab_privs order by GRANTEE;
select * from dba_tab_privs where GRANTEE='ROLEUSER';

## 查詢所有存在的角色 ##
select name from user$ where type#=0 order by name;

## 查詢所有存已經(jīng)被授與角色的角色 ##
select * from ROLE_ROLE_PRIVS;

## 查詢已經(jīng)被授予 System Privileges 的的角色 ##
select * from ROLE_SYS_PRIVS where role='ROLE_AAA';

## 查詢已經(jīng)被授予 Object Privileges 的的角色 ##
select distinct ROLE from ROLE_TAB_PRIVS order by role;
select * from ROLE_TAB_PRIVS where role='ROLE_AAA';

## 查詢已經(jīng)被授予的角色的使用者 ##
select distinct GRANTEE from dba_role_privs order by GRANTEE;
select * from dba_role_privs where GRANTEE='ROLEUSER';

原文鏈接http://bloodsucker.pixnet.net/blog/post/38649657-oracle-%E6%AC%8A%E9%99%90-(privileges)

總結(jié)

以上是生活随笔為你收集整理的转:Oracle 權限 (privileges)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。