Oracle12C多租戶管理使用者 角色 許可權

2021-09-20 16:35:08 字數 2428 閱讀 6256

在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/[email protected]/testpdb

sql*plus: release 12.2.0.1.0 production on tue jul 18 15:15:51 2017

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;   ---將角色賦予本地使用者

Oracle12c學習 使用者管理(一)

cdb全稱為container database,中文翻譯為資料庫容器,pdb全稱為pluggable database,即可插拔資料庫。oracle 12c引入了cdb與pdb的新特性,在oracle 12c資料庫引入的多租使用者環境 multitenant environment 中,允許乙個資...

oracle12c建立使用者

本人在centos7安裝好資料庫 oracle12c 準備建立乙個使用者的時候 報錯了,如下 sql create user bpmx3 identified by bpmx3 create user bpmx3 identified by bpmx3 error at line 1 ora 650...

Oracle 12C 安裝異常

報錯 一 ins 30131 1.以管理員執行setup.exe 2.管理員要有c盤的讀寫許可權 控制面板 所有控制面板項 管理工具 計算機管理 系統工具 共享資料夾 共享 3.regedit hkey local machine system currentcontrolset services ...