Thứ Bảy, 6 tháng 9, 2025

Quản trị Phân quyền trong Postgresql

Lệnh GRANT trong PostgreSQL được sử dụng để cấp quyền cho người dùng hoặc roles để thực hiện các hoạt động cụ thể trên các đối tượng cơ sở dữ liệu như bảng, cột, view, schema, và các đối tượng khác. Dưới đây là chi tiết về cách sử dụng lệnh GRANT.

Cú pháp cơ bản

GRANT privilege [, ...] ON object_type object_name [, ...] TO role_name [, ...];
  • privilege: Quyền mà bạn muốn cấp (VD: SELECT, INSERT, UPDATE, DELETE).
  • object_type: Loại đối tượng (VD: TABLE, DATABASE, SCHEMA).
  • object_name: Tên của đối tượng.
  • role_name: Tên của người dùng hoặc vai trò nhận quyền.

Các quyền phổ biến

  • TABLE: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER.
  • DATABASE: CREATE, CONNECT, TEMPORARY.
  • SCHEMA: CREATE, USAGE.
  • FUNCTION: EXECUTE.
  • SEQUENCE: SELECT, UPDATE, USAGE.

Cấp quyền SELECT trên một bảng cho một roles:

GRANT SELECT ON TABLE table_name TO role_name;

GRANT SELECT ON TABLE employees TO hr_user;

Cấp quyền INSERT, UPDATE trên một bảng cho một roles:

GRANT INSERT, UPDATE ON TABLE employees TO hr_user;

Cấp quyền CONNECT trên cơ sở dữ liệu cho một roles:

GRANT CONNECT ON DATABASE db_name TO role_name;

GRANT CONNECT ON DATABASE company_db TO guest_user;

Cấp quyền USAGE trên một schema cho một roles:

GRANT USAGE ON SCHEMA schema_name TO role_name;

GRANT USAGE ON SCHEMA sales TO sales_team;

Cấp quyền CREATE trên một schema cho một roles:

GRANT CREATE ON SCHEMA schema_name TO role_name;

GRANT CREATE ON SCHEMA sales TO sales_team;

Cấp quyền SELECT trên một cột cụ thể của bảng cho một roles:

GRANT SELECT (column_name) ON TABLE table_name TO role_name;

GRANT SELECT (employee_name) ON TABLE employees TO hr_user;

Cấp quyền USAGE trên một sequence cho một roles:

GRANT USAGE, SELECT ON SEQUENCE sequence_name TO role_name;

GRANT USAGE, SELECT ON SEQUENCE employee_id_seq TO hr_user;

Quản lý quyền với lệnh REVOKE

REVOKE privilege [, ...] ON object_type object_name [, ...] FROM role_name [, ...];

REVOKE SELECT ON TABLE employees FROM hr_user;

Cấp quyền với tùy chọn WITH GRANT OPTION

Khi cấp quyền với tùy chọn WITH GRANT OPTION, roles được cấp quyền có thể cấp lại quyền đó cho các roles khác.

GRANT SELECT ON TABLE table_name TO role_name WITH GRANT OPTION;

GRANT SELECT ON TABLE employees TO hr_manager WITH GRANT OPTION;

Xem quyền hiện có

Bạn có thể kiểm tra quyền hiện có của các roles bằng cách truy vấn các bảng hệ thống như pg_rolespg_catalog.pg_tablesinformation_schema.table_privileges.

Kiểm tra quyền trên bảng:

SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE table_name = 'table_name';

SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE table_name = 'employees';
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 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: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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

=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

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