1. 程式人生 > >Oracle12c多租戶管理用戶、角色、權限

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

ota table logo 本地 emp 滿足 pdb 不可見 常見

Oracle 數據庫 12 c 多租戶選項允許單個容器數據庫 (CDB) 來承載多個單獨的可插拔數據庫 (PDB)。
那麽我們如何在容器數據庫 (CDB) 和可插拔數據庫 (PDB)管理用戶權限。


背景:
當連接到多租戶的數據庫中,用戶權限的管理相對傳統的 Oracle 單數據庫環境稍有不同。在多租戶環境中有兩種類型的用戶。
共同用戶(Common User): 該用戶存在所有容器 (根和所有的 Pdb) 中。
本地用戶(Local User): 用戶只有在特定的 PDB 中存在。同樣的用戶名中可以存在多個Pdb中創建,但它們之間沒有關系。
同樣,有兩種類型的角色。
共同角色(Common Role): 該角色在所有容器 (根和所有的 Pdb) 中。
本地角色(Local Role): 該角色只存在於特定的 PDB。可以在多個 Pdb中創建相同的角色名稱,但它們之間沒有關系。
一些 DDL 語句有擴充,以使他們能夠定向到當前容器還是所有容器的CONTAINER子句。它的使用將在以下各節中進行演示。


一、創建和共同用戶
條件:
1.必須連接到具有CREATE USER特權的共同用戶。
2.在當前的數據庫必須是根容器數據庫。
3.常見的用戶的用戶名必須與"C##"或"c##"作為前綴,並包含唯一的 ASCII 或 EBCDIC 字符。
4.在所有容器該共同用戶名必須是唯一的。
5.DEFAULT TABLESPACE、TEMPORARY TABLESPACE、QUOTA和PROFILE必須存在於所有容器中的所有引用對象。
您可以指定CONTAINER=ALL子句,或者忽略它,因為這是默認設置時,當前的容器是根。
6.公共用戶可以在不同的CDB、PDB數據庫中有不同的權限。
操作:
在 cdb 中創建公共用戶的時候, pdbs 中也會創建相同用戶。若CDB 下 GRANT 命令賦權,如果賦權時未指定container=all,則賦權只在CDB中生效,並不會在PDB中生效,這個用戶要能夠訪問PDB,需要切換到 pdb 再賦權。。若賦權時指定 container=all,則賦權在CDB中生效,也在PDB中生效。


賦權時未指定container=all:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##andy02 identified by andy;
SQL> grant create session to c##andy02;
C:\Users\andy>sqlplus [email protected]

/* */:1521/andycdb
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
C:\Users\andy>sqlplus [email protected]:1521/pdb01
ERROR:
ORA-01045: user C##ANDY02 lacks CREATE SESSION privilege; logon denied
SQL> alter session set container=pdb01;
SQL> grant create session to c##andy02;
C:\Users\andy>sqlplus [email protected]
/* */:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


賦權時指定container=all:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##andy identified by andy;
SQL> grant create session to c##andy container=all;
C:\Users\andy>sqlplus [email protected]
/* */:1521/andycdb
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
C:\Users\andy>sqlplus [email protected]:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


二、創建本地用戶
條件:
1.必須連接到具有CREATE USER特權的用戶。
2.本地用戶的用戶名不必須與"C##"或"c##"作為前綴。
3.用戶名必須是在 PDB 內是唯一的。
4.當前的容器是 PDB 的時候,您可以指定CONTAINER=CURRENT子句,或者忽略它,因為這是默認設置。
操作:
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> create user andy identified by andy;
SQL> grant create session to andy;
C:\Users\andy>sqlplus [email protected]:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
-- 去 CDB 中查看 本地用戶 ANDY 存在否,果真不存在。
SQL> show con_name


CON_NAME
------------------------------
CDB$ROOT
SQL> select username,created from dba_users where username=‘ANDY‘;
no rows selected


三、創建共同角色
類似於前面所述的用戶,角色可以是共同的或本地的 。
Oracle 提供的所有角色在根容器中和所有的 Pdb可見。創建共同角色需要滿足以下條件。
條件
1.必須連接到共同用戶CREATE ROLE與通常授予的SET CONTAINER權限。
2.當前的容器必須是根容器。
3.常見角色的角色名稱必須與"C##"或"c##"為前綴,並且包含唯一 ASCII 或 EBCDIC 字符。
4.在所有容器的角色名稱必須是唯一的。
5.角色創建與CONTAINER=ALL子句
6.公共角色可以賦予公共用戶或者本地用戶
操作:
註意:在 CDB 賦予角色權限的時候,需要指定 container=all ,否則 PDB 中不可見。
SQL> show con_name
CON_NAME
-------------------
CDB$ROOT
SQL> create role c##role_andy;
公共角色賦權 To a common user:
SQL> grant select on dba_objects to c##role_andy container=all;
SQL> grant c##role_andy to c##andy container=all;


C:\Users\andy>sqlplus [email protected]:1521/andycdb
SQL>
set lin 300;
set pagesize 300;
col username for a30;
col granted_role for a30;
select * from USER_ROLE_PRIVS;


USERNAME GRANTED_ROLE ADM DEL DEF OS_ COM INH
------------------------------ ------------------------------ --- --- --- --- --- ---
C##ANDY C##ROLE_ANDY NO NO YES NO YES NO
SQL> select count(*) from dba_objects;


COUNT(*)
----------
72635


C:\Users\andy>sqlplus [email protected]:1521/pdb01
set lin 300;
set pagesize 300;
col username for a30;
col granted_role for a30;
select * from USER_ROLE_PRIVS;


USERNAME GRANTED_ROLE ADM DEL DEF OS_ COM INH
------------------------------ ------------------------------ --- --- --- --- --- ---
C##ANDY C##ROLE_ANDY NO NO YES NO YES YES
SQL> select count(*) from dba_objects;
COUNT(*)
----------
72629


公共角色賦權 To a local user:
SQL> alter session set container=pdb01;
SQL> grant c##role_andy to andy;
C:\Users\andy>sqlplus [email protected]:1521/pdb01
SQL> select count(*) from dba_objects;
COUNT(*)
----------
72629


四、創建本地角色
本地角色是以類似的方式到 pre-12 c 數據庫創建的。每個 PDB 可以具有與匹配的名稱,因為當地的作用範圍僅限於當前 PDB 的角色。
必須滿足以下條件。
條件:
1.必須連接到具有CREATE ROLE權限的用戶。
2.如果您連接到公共用戶,容器必須設置為本地 PDB。
3.角色名稱為本地角色不必須與"C##"或"c##"作為前綴。
4.角色名稱必須是唯一在 PDB 內。
5.本地角色可以賦權給公共用戶(作用範圍局限於pdb內操作,不影響CDB權限)或者本地用戶。
操作:
SQL> alter session set container=pdb01;
create role pdb_role;
grant select on dba_tables to pdb_role;


本地角色賦權 To a common user:
grant pdb_role to c##andy;
C:\Users\andy>sqlplus [email protected]:1521/pdb01
SQL> select count(*) from dba_tables;
COUNT(*)
----------
2106
C:\Users\andy>sqlplus [email protected]:1521/andycdb
SQL> select count(*) from dba_tables;
select count(*) from dba_tables
*
ERROR at line 1:
ORA-00942: table or view does not exist


本地角色賦權 To a local user:
grant pdb_role to andy;
C:\Users\andy>sqlplus [email protected]:1521/pdb01
SQL> select count(*) from dba_tables;
COUNT(*)
----------
2106


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

相關推薦

Oracle12c租戶管理角色

ota table logo 本地 emp 滿足 pdb 不可見 常見 Oracle 數據庫 12 c 多租戶選項允許單個容器數據庫 (CDB) 來承載多個單獨的可插拔數據庫 (PDB)。那麽我們如何在容器數據庫 (CDB) 和可插拔數據庫 (PDB)管理用戶權限。背景:當

Oracle 角色

connect 沒有 權限 del intel cluster 登陸 select The 權限管理是 Oracle 系統的精華,不同用戶登錄到同一數據庫中,可能看到不同數量的表,擁有不同的權限。Oracle 的權限分為系統權限和數據對象權限,共一百多種,如果單獨對用戶授權

Oracle的角色以及相關操作

連接數據庫 創建用戶 opera pri count curry 操作 密碼 pro 1、創建用戶create user KD identified by 123456;2、授予連接數據庫的權限grant connect to KD;3、將Scott用戶的emp表授權給KD

Oracle12C 租戶管理

Oracle12c 多租戶 管理 --進入cdb sqlplus /nolog conn sys/sys as dba --查看數據庫基本信息select name,cdb from v$database;--查看容器的相關信息select con_id,name from v$contain

Linux基礎知識之組以及 Linux 管理

space 屬性 並且 用戶表 相同 發行版 切換 用戶登錄 是什麽 已經開始接觸Linux用戶管理,用戶組管理,以及權限管理這幾個逼格滿滿的關鍵字。這幾個關鍵字對於前端程序猿的我來說真的是很高大上有木有,以前嘗試學 Linux 的時候看到這些名詞總是下意識的跳過不敢看有木

linux——及文件管理

改變 共享 就會 一點 ech 查看內部 AR 文件系統 mod 通過第一節課程的學習,你應該已經知道,Linux 是一個可以實現多用戶登陸的操作系統,比如“李雷”和“韓梅梅”都可以同時登陸同一臺主機,他們共享一些主機的資源,但他們也分別有自己的用戶空間,用於存放各自的文件

linux 及文件管理

期待 deluser name tor space 資源 white 新建 tty Linux 是一個可以實現多用戶登陸的操作系統,比如“李雷”和“韓梅梅”都可以同時登陸同一臺主機,他們共享一些主機的資源,但他們也分別有自己的用戶空間,用於存放各自的文件。但實際上他們的文件

,組和管理

uos xfs 查看 無法創建 切換用戶 不可 文件系統 tune2fs 文件權限 用戶,組和權限管理 概述:在Linux中由於可以實現多用戶和多任務的管理,所以在Linux中用戶和組與文件的權限關系顯得格外重要。如果出現混亂,那麽在用戶使用時會給系統造成很多不穩定性的因素

mysqldump 備份數據庫所需要的

fec show update mysqldump highlight blog ger sql 0 rows mysqldump 所需要的權限說明:   1、對於table 來說mysqldump 最少要有select 權限。   2、對於view 來說mysqldum

vc判斷當前是否具有administrator 代碼

color format min() new ins int class 判斷 auth BOOL IsAdmin() { HANDLE hAccessToken; BYTE * InfoBuffer = new BYTE[1024];

linux基礎-給普通組分配sudo

輸入 sudoer inux 指令 bsp linux 登錄 roo sudoers 在root用戶登錄下, 輸入 vim /etc/sudoers ,在root ALL=(ALL) ALL 這一行後面按著這種格式加上你要添加sudo權限的的用戶組名稱。 eg:

linux[基礎]-20-與文件-[文件特殊]-[01]

.cn 工作 授權 span operation 限制 們的 abr 管理員 用戶與文件權限 用戶:   用戶root是系統的超級管理員,而真正讓他成為管理員的不是   用戶名“root”,而是其UID編號。 UID:每個用戶都有相對應的UID號,就像我們的身份證號

linux[基礎]-20-與文件-[文件隱藏]-[02]

-- rem inux ted 所有 attr width col 新建 文件的隱藏權限 文件的權限除了讀、寫和SUID、SGID、SBIT之外還有一種特殊的權限   例如:你有權限刪除某一個文件而不能刪除,又或者是你僅僅只能       為某個文件追加內容而不能去減少

CentOS為普通添加root,以便正常使用sudo命令

這一 bsp name 配置文件 blog sudo 通用 gpo oot su  #先變更為root用戶 visudo  #打開配置文件 找到“root ALL=(ALL) ALL”這一行,然後在其下新添加一行,類似這樣: YourUserName  ALL=(AL

關於Linux,,組,,文本處理工具,正則表達式,vim文本編輯器

rtx 元字符 否則 權限 tdi 行編輯 directory e2fs 登錄 一、 用戶 ??在Linux系統中,可以創建多個用戶,每一個用戶都有一個與其對應的ID號,就像每一個人都有一個×××號一樣,這就是用戶的UID,??在Linux中管理員 root的默認UID

linux 將任意一個升為root

clas post mage linu 配置 img root權限 linux 最後一行 修改配置文件etc下的passwd文件 最後一行hpc:x:1000:1000:hpc,,,:/home/hpc:/bin/bash 1 將權限提升為root的權限碼0 2 將命

Ubuntu創建新並增加管理員

命令 同名 success clas 自動創建 就會 log lin res 轉自:Ubuntu創建新用戶並增加管理員權限 $是普通管員,#是系統管理員,在Ubuntu下,root用戶默認是沒有密碼的,因此也就無法使用(據說是為了安全)。想用root的話,得給root

Linux中給普通添加sudo

sudoer 輸入密碼 添加 保存 超級用戶 普通 行操作 撤銷 系統 使用Linux系統時,經常會被要求使用超級權限,但是root的權限太過大了,一般慎用!!!因此可以通過給普通用戶添加sudo權限,平常用普通用戶進行操作,當需要root權限的時候進行sudo操作。以下為

Linux學習筆記5,組和

方式 無法 表示 組密碼 保存 pan upa 1.2 chmod u+s 1.用戶和組 1.1常用的幾個文件: /etc/passwd 用戶信息文件 /etc/shadow 用戶密碼文件 /etc/group 用