คุณพบชวเลขเพื่อตั้งสิทธิ์สำหรับตารางที่มีอยู่ทั้งหมดในสคีมาที่กำหนด คู่มือชี้แจง :
(แต่โปรดทราบว่าALL TABLESรวมถึงมุมมองและตารางต่างประเทศ )
ฉันเน้นตัวหนา serialคอลัมน์ถูกนำไปใช้โดยnextval()เรียงตามลำดับเป็นค่าเริ่มต้นของคอลัมน์และอ้างอิงคู่มือ :
สำหรับลำดับสิทธิ์นี้อนุญาตให้ใช้ฟังก์ชันcurrvalและnextval
ดังนั้นหากมีserialคอลัมน์คุณจะต้องให้สิทธิ์USAGE(หรือALL PRIVILEGES) ในลำดับด้วย
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
หมายเหตุ: คอลัมน์ข้อมูลประจำตัวใน Postgres 10 ขึ้นไปใช้ลำดับโดยนัยที่ไม่ต้องการสิทธิ์เพิ่มเติม (พิจารณาอัปเกรดserialคอลัมน์)
แล้ววัตถุใหม่ล่ะ?
คุณจะสนใจDEFAULT PRIVILEGESผู้ใช้หรือสคีมาด้วย :
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
สิ่งนี้ตั้งค่าสิทธิพิเศษสำหรับอ็อบเจ็กต์ที่สร้างขึ้นในอนาคตโดยอัตโนมัติ แต่ไม่ใช่สำหรับอ็อบเจ็กต์ที่มีอยู่แล้ว
สิทธิพิเศษเริ่มต้นเพียงนำไปใช้กับวัตถุที่สร้างขึ้นโดยผู้ใช้เป้าหมาย ( FOR ROLE my_creating_role) ALTER DEFAULT PRIVILEGESหากข้อที่ถูกละไว้เป็นค่าเริ่มต้นให้กับผู้ใช้ในปัจจุบันการดำเนินการ เพื่อให้ชัดเจน:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
โปรดสังเกตด้วยว่า pgAdmin III ทุกเวอร์ชันมีจุดบกพร่องเล็กน้อยและแสดงสิทธิ์เริ่มต้นในบานหน้าต่าง SQL แม้ว่าจะไม่ได้ใช้กับบทบาทปัจจุบันก็ตาม อย่าลืมปรับFOR ROLEประโยคด้วยตนเองเมื่อคัดลอกสคริปต์ SQL