PostgreSQL - สิทธิพิเศษ

เมื่อใดก็ตามที่วัตถุถูกสร้างขึ้นในฐานข้อมูลเจ้าของจะถูกกำหนดให้กับมัน เจ้าของมักจะเป็นผู้ดำเนินการคำสั่งสร้าง สำหรับวัตถุส่วนใหญ่สถานะเริ่มต้นคือมีเพียงเจ้าของ (หรือผู้ใช้ขั้นสูง) เท่านั้นที่สามารถแก้ไขหรือลบวัตถุได้ ในการอนุญาตให้บทบาทหรือผู้ใช้อื่น ๆ ใช้งานได้ต้องให้สิทธิ์พิเศษหรือการอนุญาต

สิทธิพิเศษประเภทต่างๆใน PostgreSQL ได้แก่ -

  • SELECT,
  • INSERT,
  • UPDATE,
  • DELETE,
  • TRUNCATE,
  • REFERENCES,
  • TRIGGER,
  • CREATE,
  • CONNECT,
  • TEMPORARY,
  • ดำเนินการและ
  • USAGE

ขึ้นอยู่กับประเภทของวัตถุ (ตารางฟังก์ชัน ฯลฯ ) สิทธิ์จะถูกนำไปใช้กับวัตถุ ในการกำหนดสิทธิ์ให้กับผู้ใช้คำสั่ง GRANT จะถูกใช้

ไวยากรณ์สำหรับ GRANT

ไวยากรณ์พื้นฐานสำหรับคำสั่ง GRANT มีดังนี้ -

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege - ค่าอาจเป็น: SELECT, INSERT, UPDATE, DELETE, RULE, ALL

  • object- ชื่อของวัตถุที่จะให้สิทธิ์เข้าถึง วัตถุที่เป็นไปได้ ได้แก่ ตารางมุมมองลำดับ

  • PUBLIC - รูปแบบสั้น ๆ ที่แสดงถึงผู้ใช้ทั้งหมด

  • กลุ่ม group - กลุ่มที่ให้สิทธิ์

  • username- ชื่อผู้ใช้ที่จะให้สิทธิ์ PUBLIC เป็นรูปแบบสั้น ๆ ที่แสดงถึงผู้ใช้ทั้งหมด

สามารถเพิกถอนสิทธิ์ได้โดยใช้คำสั่ง REVOKE

ไวยากรณ์สำหรับ REVOKE

ไวยากรณ์พื้นฐานสำหรับคำสั่ง REVOKE มีดังนี้ -

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege - ค่าอาจเป็น: SELECT, INSERT, UPDATE, DELETE, RULE, ALL

  • object- ชื่อของวัตถุที่จะให้สิทธิ์เข้าถึง วัตถุที่เป็นไปได้ ได้แก่ ตารางมุมมองลำดับ

  • PUBLIC - รูปแบบสั้น ๆ ที่แสดงถึงผู้ใช้ทั้งหมด

  • กลุ่ม group - กลุ่มที่ให้สิทธิ์

  • username- ชื่อผู้ใช้ที่จะให้สิทธิ์ PUBLIC เป็นรูปแบบสั้น ๆ ที่แสดงถึงผู้ใช้ทั้งหมด

ตัวอย่าง

เพื่อทำความเข้าใจเกี่ยวกับสิทธิพิเศษให้เราสร้าง USER ก่อนดังนี้ -

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

ข้อความ CREATE ROLE ระบุว่ามีการสร้าง USER "manisha"

พิจารณาตารางCOMPANY ที่มีบันทึกดังนี้ -

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

ต่อไปให้เรามอบสิทธิพิเศษทั้งหมดบนโต๊ะ COMPANY ให้กับผู้ใช้ "manisha" ดังนี้ -

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

ข้อความ GRANT ระบุว่ามีการกำหนดสิทธิ์ทั้งหมดให้กับ USER

ต่อไปให้เราเพิกถอนสิทธิพิเศษจาก USER "manisha" ดังนี้ -

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

ข้อความ REVOKE ระบุว่าสิทธิ์ทั้งหมดถูกเพิกถอนจาก USER

คุณสามารถลบผู้ใช้ดังต่อไปนี้ -

testdb=# DROP USER manisha;
DROP ROLE

ข้อความ DROP ROLE ระบุว่า USER 'Manisha' ถูกลบออกจากฐานข้อมูล