您好,登錄后才能下訂單哦!
在Oracle12C中,用戶權限的管理相對傳統的 Oracle 單數據庫環境稍有不同。在多租戶環境中有兩種類型的用戶。
①:共同用戶(Common User): 該用戶存在所有容器 (根和所有的 Pdb) 中。
②:本地用戶(Local User): 用戶只有在特定的 PDB 中存在。同樣的用戶名中可以存在多個Pdb中創建,但它們之間沒有關系。
同樣,有兩種類型的角色:如
①:共同角色(Common Role): 該角色在所有容器 (根和所有的 Pdb) 中。
②:本地角色(Local Role): 該角色只存在于特定的 PDB。可以在多個 Pdb中創建相同的角色名稱,但它們之間沒有關系。
一些 DDL 語句有擴充,以使他們能夠定向到當前容器還是所有容器的CONTAINER子句。它的使用將在以下各節中進行演示。
注意:
在 cdb 中創建公共用戶的時候, pdbs 中也會創建相同用戶。若CDB 下 GRANT 命令賦權,如果賦權時未指定container=all,則賦權只在CDB中生效,并不會在PDB中生效,這個用戶要能夠訪問PDB,需要切換到 pdb 再賦權。。若賦權時指定 container=all,則賦權在CDB中生效,也在PDB中生效。
1、在CDB中,給用戶賦權時未指定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; --賦權給用戶,這個時候開啟另一個窗口使用該用戶登錄pdb的時候是沒有權限的,如下:
[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中,給用戶賦權就可以登錄了:
SQL> alter session set container=testpdb;
SQL> grant create session to c##zhang;
2、在CDB中,給用戶賦權時指定container=all:
SQL> create user c##zhang1 identified by zhang;
SQL> grant create session to c##zhang1 container=all;
3、創建公共角色:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create role c##role; ---創建角色
SQL> grant select on dba_objects to c##role container=all; --給這個角色加權限
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 數據庫創建的。每個 PDB 可以具有與匹配的名稱,因為當地的作用范圍僅限于當前 PDB 的角色。
必須滿足以下條件。
條件:
①:必須連接到具有CREATE ROLE權限的用戶。
②:如果您連接到公共用戶,容器必須設置為本地 PDB。
③:角色名稱為本地角色不必須與"C##"或"c##"作為前綴。
④:角色名稱必須是唯一在 PDB 內。
⑤:本地角色可以賦權給公共用戶(作用范圍局限于pdb內操作,不影響CDB權限)或者本地用戶。如:
SQL> show con_name;
CON_NAME
------------------------------
TESTPDB
SQL> create role pdb_role; ---創建角色
SQL> grant select on dba_tables to pdb_role; --給角色加權限
SQL> grant pdb_role to c##zhang; --將角色賦予公共用戶
SQL> grant pdb_role to admin; ---將角色賦予本地用戶
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。