Thứ Hai, 11 tháng 1, 2021

Tạo user, role, gán quyền trong Container Databases (CDB) and Pluggable Databases (PDB) in Oracle Database 12c

Mục đích: Hướng dẫn tạo user, role, gán quyền trong Container Databases (CDB) and Pluggable Databases (PDB) in Oracle Database 12c

GIỚI THIỆU
Khi được kết nối với cơ sở dữ liệu multitenant, việc quản lý người dùng và quyền có một chút khác biệt so với các môi trường Oracle truyền thống. Trong môi trường multitenant, có hai loại người dùng.
  • Người dùng chung (Common User): Người dùng được sử dụng trong tất cả các container (root và tất cả các PDB).
  • Người dùng cục bộ (local user): Người dùng chỉ được dùng trong một PDB cụ thể. Tên người dùng giống nhau có thể được tạo trong các PDB khác nhau.
Tương tự như vậy, có hai loại role:

  • Common Role: Role này được dùng cho tất cả các container (root và tất cả các PDB).
  • Local Role: Role này chỉ được sử dụng cho PDB cụ thể. Tên role có thể giống nhau ở các PDB khác nhau.
Một số câu lệnh DDL có mệnh đề CONTAINER được thêm vào để cho phép chúng được chuyển hướng đến container hiện tại hoặc tất cả các container. Cách sử dụng của nó sẽ được trình bày bên dưới.

1. Kiểm tra xem có phải là container DB không
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                             READ WRITE NO
-- Chuyển sang PDB1
SQL> alter session set container = PDB1;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
PDB1
2. Nếu là DB Container thì tạo user
2.1.TẠO USER
Common user tạo trên Container DataBase (CDB), có quyền trên mọi container (root và mọi PDB), khi tạo user phải thêm tiền tố C##
CONN / AS SYSDBA

CREATE USER c##test_user1 IDENTIFIED BY password1 CONTAINER=ALL;
GRANT CREATE SESSION TO c##test_user1 CONTAINER=ALL;

CREATE USER c##test_user2 IDENTIFIED BY password1;
GRANT CREATE SESSION TO c##test_user2;

Nếu không muốn có ký tự c## thì dùng tip sau:
alter session set "_ORACLE_SCRIPT"=true;  
(Mức system dùng câu lệnh: alter system set _common_user_prefix = '' scope=spfile;)
create user binhtv identified by Binhtv$123;

Local user tạo trên Pluggable DataBase (PDB), chỉ có quyền trên đúng PDB đó do vậy tên giống nhau trên các PDB khác nhau vẫn được.

CONN / AS SYSDBA

ALTER SESSION SET CONTAINER = pdb1;

CREATE USER test_user3 IDENTIFIED BY password1 CONTAINER=CURRENT;
GRANT CREATE SESSION TO test_user3 CONTAINER=CURRENT;

CONN system/password@pdb1

CREATE USER test_user4 IDENTIFIED BY password1;
GRANT CREATE SESSION TO test_user4;
2.2. TẠO ROLE

Common Roles

CONN / AS SYSDBA

CREATE ROLE c##test_role1;
GRANT CREATE SESSION TO c##test_role1;

GRANT c##test_role1 TO c##test_user1 CONTAINER=ALL;

ALTER SESSION SET CONTAINER = pdb1;
GRANT c##test_role1 TO test_user3;

Local Roles

ONN / AS SYSDBA

ALTER SESSION SET CONTAINER = pdb1;

-- CONN system/password@pdb1

CREATE ROLE test_role1;
GRANT CREATE SESSION TO test_role1;

GRANT test_role1 TO c##test_user1;

GRANT test_role1 TO test_user3;
2.3. GÁN QUYỀN, ROLE CHO COMMON VÀ LOCAL USER 
-- Common grants.
CONN / AS SYSDBA

GRANT CREATE SESSION TO c##test_user1 CONTAINER=ALL;
GRANT CREATE SESSION TO c##test_role1 CONTAINER=ALL;
GRANT c##test_role1 TO c##test_user1 CONTAINER=ALL;

-- Local grants.
CONN system/password@pdb1
GRANT CREATE SESSION TO test_user3;
GRANT CREATE SESSION TO test_role1;
GRANT test_role1 TO test_user3;
==================================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

#OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #tự học oracle

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master