溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle12C多租戶管理用戶、角色、權限

發(fā)布時間:2020-07-24 09:39:51 來源:網絡 閱讀:14621 作者:一個笨小孩 欄目:關系型數據庫

在Oracle12C中,用戶權限的管理相對傳統的 Oracle 單數據庫環(huán)境稍有不同。在多租戶環(huán)境中有兩種類型的用戶。

①:共同用戶(Common User): 該用戶存在所有容器 (根和所有的 Pdb) 中。

②:本地用戶(Local User): 用戶只有在特定的 PDB 中存在。同樣的用戶名中可以存在多個Pdb中創(chuàng)建,但它們之間沒有關系。


同樣,有兩種類型的角色:如

①:共同角色(Common Role): 該角色在所有容器 (根和所有的 Pdb) 中。

②:本地角色(Local Role): 該角色只存在于特定的 PDB??梢栽诙鄠€ Pdb中創(chuàng)建相同的角色名稱,但它們之間沒有關系。

一些 DDL 語句有擴充,以使他們能夠定向到當前容器還是所有容器的CONTAINER子句。它的使用將在以下各節(jié)中進行演示。


注意:

   在 cdb 中創(chuàng)建公共用戶的時候, pdbs 中也會創(chuàng)建相同用戶。若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、創(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;  --給這個角色加權限


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 數據庫創(chuàng)建的。每個 PDB 可以具有與匹配的名稱,因為當地的作用范圍僅限于當前 PDB 的角色。

必須滿足以下條件。

條件:

①:必須連接到具有CREATE ROLE權限的用戶。

②:如果您連接到公共用戶,容器必須設置為本地 PDB。

③:角色名稱為本地角色不必須與"C##"或"c##"作為前綴。

④:角色名稱必須是唯一在 PDB 內。

⑤:本地角色可以賦權給公共用戶(作用范圍局限于pdb內操作,不影響CDB權限)或者本地用戶。如:


SQL> show con_name;


CON_NAME

------------------------------

TESTPDB


SQL> create role pdb_role;    ---創(chuàng)建角色

SQL> grant select on dba_tables to pdb_role;  --給角色加權限

SQL> grant pdb_role to c##zhang;  --將角色賦予公共用戶

SQL> grant pdb_role to admin;   ---將角色賦予本地用戶


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI