- vừa được xem lúc

Tạo user và gán quyền kết nối trong Database Oracle 19c

0 0 22

Người đăng: Lê Anh

Theo Viblo Asia

Trước khi đi vào nội dung chính, chúng ta sẽ tìm hiểu qua:

Kiến trúc Multitenant trong Oracle Database là gì?

Để dễ hình dung mình sẽ so sánh kiến trúc của Oracle 11g và 12c ở một vài điểm, từ bản 11g trở về trước, mỗi instance chỉ phục vụ cho 1 database như vậy n database mình cần tạo n instance. Với kiến trúc như vậy trong tình huống nếu có nhiều database chạy trên 1 máy chủ, sẽ có nhiều tài nguyên bị dư thừa, không tối ưu được.

Ở phiên bản 12c, Oracle đã đưa ra khái niệm Multitenant, chúng ta sẽ có một database mẹ Container Database (CDB), nó có nhiệm vụ lưu trữ, quản lý các thông tin điều khiển chung. Ngoài ra chung ta sẽ có các database con gắn vào database mẹ, gọi là các Pluggable database (PDB). Đây là nơi lưu trữ các dữ liệu thực sự của người dùng. Hiểu nôm na là các PDB sống dựa vào CDB. CDB cung cấp các proccess, memory để cho PDB hoạt động

Ghi chú: CDB cũng có thể lưu trữ dữ liệu nhưng theo khuyên cáo của Oracle không nên lưu dữ liệu trong CDB để tránh các xung đột ảnh hưởng đến hiệu năng database.

Có một PDB đặc biệt được sinh ra khi khởi tạo CDB, nói gọi là PDB hạt giống (PDB$SEED) và nó chỉ có thể đọc chứ không thể sửa đổi

SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO

Việc quản lý người dùng và quyền có một chút khác biệt so với môi trường oracle 11g.

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ó có hai loại role:

  • Common Role: Role này được dùng chung cho tất cả các container (Root và các PDB)
  • Local Role: Role này được dùng cho các PDB cụ thể. Tên role có thể giống nhau ở các PDB khác nhau.
  1. Kiểm tra Container name, chuyển Pluggable
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 ORCLPDB1 READ WRITE NO
SQL> alter session set container=ORCLPDB1; Session altered. SQL> show con_name CON_NAME
------------------------------
ORCLPDB1
  1. Tạo User, Role
  • Tạo User
  • Tạo common user trên Container Database (CDB), khi tạo thêm tiền tố C##
CONN / AS SYSDBA CREATE USER c##user1 IDENTIFIED BY password1 CONTAINER=ALL;
GRANT CREATE SESSION TO c##user1 CONTAINER=ALL;

Ghi chú: Nếu không muốn dùng ký tự c## thì dùng tip sau

CONN / AS SYSDBA
alter session set "_ORACLE_SCRIPT"=true; 

config system dùng câu lệnh: alter system set _common_user_prefix = '' scope=spfile;

  • Tạo local use
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = ORCLPDB1;
CREATE USER user2 IDENTIFIED BY password2 CONTAINER=CURRENT;
GRANT CREATE SESSION TO user2 CONTAINER=CURRENT; Hoặc
CONN system/password@ORCLPDB1
CREATE USER user3 IDENTIFIED BY password3;
GRANT CREATE SESSION TO user3;
  • Tạo role
  • Tạo common roles
CONN / AS SYSDBA
CREATE ROLE c##role1;
GRANT CREATE SESSION TO c##role1;
GRANT c##role1 TO c##user1 CONTAINER=ALL; ALTER SESSION SET CONTAINER = ORCLPDB1;
GRANT c##role1 TO user2;
  • Tạo local roles
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = ORCLPDB1;
-- CONN system/password@ORCLPDB1 CREATE ROLE role1;
GRANT CREATE SESSION TO role1;
GRANT role1 TO c##user1;
  • Gán quyền role cho common và local user
-- Common grants.
CONN / AS SYSDBA
GRANT CREATE SESSION TO c##user1 CONTAINER=ALL;
GRANT CREATE SESSION TO c##role1 CONTAINER=ALL;
GRANT c##role1 TO c##user1 CONTAINER=ALL; -- Local grants.
CONN system/password@ORCLPDB1
GRANT CREATE SESSION TO user1;
GRANT CREATE SESSION TO role1;
GRANT role1 TO user2;
  1. Tạo tablespace Để triển khai một dự án mới, ta cần tạo một tablesapce mới và tạo account gán quyền trên tablesapce mới đó cấp cho đội dự án sử dụng. Mục đính tạo ra các tablespace để dễ quản lý về mặt dung lượng phát triển của một dự án.
CONN / AS SYSDBA
-- tạo tabespace
CREATE TABLESPACE PROJECT_NAME DATAFILE '/opt/oracle/oradata/ORCLCDB/PROJECT_NAME01.dbf' SIZE 1G AUTOEXTEND ON NEXT 1G MAXSIZE 8G; -- tạo user gán quyền trên tablespace PROJECT_NAME
CREATE USER USER_NAME IDENTIFIED BY <password> DEFAULT TABLESPACE PROJECT_NAME TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; -- Gán quyền truy cập và kết nối cho User đã tạo
GRANT CONNECT TO USER_NAME;
GRANT RESOURCE TO USER_NAME;

Huy vọng bài viết giúp ích cho các bạn đang tìm hiểu về database Oracle

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tài khoản người sử dụng và phân quyền truy cập tệp trên Ubuntu (P1)

Hôm nay, mình sẽ giới thiệu cho mọi người về Tài khoản người sử dụng (NSD) và phân quyền truy cập trên Ubuntu. Bài viết này được chia thành hai phần: phần một nói về tài khoản người sử dụng và phần hai nói về quyền truy cập trên Ubuntu.

0 0 35

- vừa được xem lúc

Câu chuyện kiểm soát truy cập trong Django.

Nếu bạn đang xây dựng một ứng dụng với Django, có thể bạn sẽ muốn kiểm soát quyền truy cập ứng với từng loại user. Những tính năng này sẽ phổ biến trên các trang web có quy mô lớn hơn một chút.

0 0 73

- vừa được xem lúc

Keycloak Secure any application

In life, there are many problems posed to the software industry . But most of the software that we create has a security and decentralization mechanism and user management.

0 0 34

- vừa được xem lúc

Được rồi, đi thôi!!! VPS free nè (^.^) [P2]

Bạn là sinh viên, bạn là lập trình viên khó khăn về mặt tài chính, bạn không có xiền thuê VPS, VPS được tạo ra bằng Github chỉ tồn tại trong 6 tiếng không đủ làm bạn thỏa mãn, đừng lo lắng!!! Hôm nay

0 0 48

- vừa được xem lúc

Sử dụng Python kết nối Database Oracle xuất file CDR định dạng txt đẩy lên FTP Server

Một nghiệp vụ mà anh em vận hành các hệ thống ứng dụng hay phải thực hiện là đẩy CDR giữa các hệ thống phục vụ các công việc: đối soát, report ... vv. Hôm nay mình sẽ viết một bài hướng dẫn về việc sử

0 0 20

- vừa được xem lúc

Thiết kế partition sai, hệ thống Core banking bị treo CPU 99% và tôi đã xử lý bằng chấm nhẹ như thế nào?

Lần đầu tiên tối ưu Core banking của tôi đó là nhiệm vụ tối ưu Cơ sở dữ liệu Core banking sử dụng phần mềm ORACLE FLEXCUBE của ngân hàng X (kỷ niệm rất đẹp nhưng mục tiêu của b

0 0 25