在Oracle12C中,用戶權(quán)限的管理相對傳統(tǒng)的 Oracle 單數(shù)據(jù)庫環(huán)境稍有不同。在多租戶環(huán)境中有兩種類型的用戶。
創(chuàng)新互聯(lián)建站是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作、成都全網(wǎng)營銷。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗(yàn),以及在手機(jī)等移動端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。①:共同用戶(Common User): 該用戶存在所有容器 (根和所有的 Pdb) 中。
②:本地用戶(Local User): 用戶只有在特定的 PDB 中存在。同樣的用戶名中可以存在多個Pdb中創(chuàng)建,但它們之間沒有關(guān)系。
同樣,有兩種類型的角色:如
①:共同角色(Common Role): 該角色在所有容器 (根和所有的 Pdb) 中。
②:本地角色(Local Role): 該角色只存在于特定的 PDB。可以在多個 Pdb中創(chuàng)建相同的角色名稱,但它們之間沒有關(guān)系。
一些 DDL 語句有擴(kuò)充,以使他們能夠定向到當(dāng)前容器還是所有容器的CONTAINER子句。它的使用將在以下各節(jié)中進(jìn)行演示。
注意:
在 cdb 中創(chuàng)建公共用戶的時候, pdbs 中也會創(chuàng)建相同用戶。若CDB 下 GRANT 命令賦權(quán),如果賦權(quán)時未指定container=all,則賦權(quán)只在CDB中生效,并不會在PDB中生效,這個用戶要能夠訪問PDB,需要切換到 pdb 再賦權(quán)。。若賦權(quán)時指定 container=all,則賦權(quán)在CDB中生效,也在PDB中生效。
1、在CDB中,給用戶賦權(quán)時未指定container=all:
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##zhang identified by zhang;
SQL> grant create session to c##zhang; --賦權(quán)給用戶,這個時候開啟另一個窗口使用該用戶登錄pdb的時候是沒有權(quán)限的,如下:
[oracle@localhost ~]$ sqlplus c##zhang/zhang@192.168.2.100/testpdb
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 18 15:15:51 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-01045: user C##ZHANG lacks CREATE SESSION privilege; logon denied
----切換到pdb中,給用戶賦權(quán)就可以登錄了:
SQL> alter session set container=testpdb;
SQL> grant create session to c##zhang;
2、在CDB中,給用戶賦權(quán)時指定container=all:
SQL> create user c##zhang1 identified by zhang;
SQL> grant create session to c##zhang1 container=all;
3、創(chuàng)建公共角色:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create role c##role; ---創(chuàng)建角色
SQL> grant select on dba_objects to c##role container=all; --給這個角色加權(quán)限
SQL> grant c##role to c##zhang1 container=all; --將角色賦給公共用戶
SQL> alter session set container=testpdb; ---切換到pdb
SQL> grant c##role to admin; ---也可以把這個角色賦予pdb中的本地用戶
4、本地角色
本地角色是以類似的方式到 pre-12 c 數(shù)據(jù)庫創(chuàng)建的。每個 PDB 可以具有與匹配的名稱,因?yàn)楫?dāng)?shù)氐淖饔梅秶鷥H限于當(dāng)前 PDB 的角色。
必須滿足以下條件。
條件:
①:必須連接到具有CREATE ROLE權(quán)限的用戶。
②:如果您連接到公共用戶,容器必須設(shè)置為本地 PDB。
③:角色名稱為本地角色不必須與"C##"或"c##"作為前綴。
④:角色名稱必須是唯一在 PDB 內(nèi)。
⑤:本地角色可以賦權(quán)給公共用戶(作用范圍局限于pdb內(nèi)操作,不影響CDB權(quán)限)或者本地用戶。如:
SQL> show con_name;
CON_NAME
------------------------------
TESTPDB
SQL> create role pdb_role; ---創(chuàng)建角色
SQL> grant select on dba_tables to pdb_role; --給角色加權(quán)限
SQL> grant pdb_role to c##zhang; --將角色賦予公共用戶
SQL> grant pdb_role to admin; ---將角色賦予本地用戶
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。