บทบาท PostgreSQL กับผู้ใช้ให้สิทธิ์


27

ขณะนี้ฉันเรียนรู้ความแตกต่างระหว่าง PostgreSQL และ MySQL เนื่องจากฉันมีโครงการใหม่และฉันตั้งใจจะย้ายซอฟต์แวร์ที่มีอยู่จาก MySQL ไปยัง PostgreSQL ฉันเริ่มสร้างตาราง HTML ด้วยการเปรียบเทียบคำสั่ง (สำหรับผู้ใช้ / ฐานข้อมูล / พรอมต์คำสั่ง ฯลฯ ) ระหว่างสองรายการ หลังจากอ่านคำตอบที่นี่ฉันสังเกตเห็นว่าroleดูเหมือนจะใช้เป็นกลุ่ม กับ MySQL ฉันมีสองผู้ใช้ของประชาชนโดยทั่วไป ( DELETE, INSERT, SELECTและUPDATEสิทธิ์) และผู้ดูแลระบบที่มีสิทธิ์เพิ่มเติมคู่

ดังนั้นโดยทั่วไปในพรอมต์คำสั่ง Windows 7 (การพัฒนาท้องถิ่นเท่านั้น) ...

  • บทบาทผู้ใช้กลุ่มหรือคำที่ใช้อย่างหลวม ๆ กับ PostgreSQL หรือไม่?
  • ฉันจะให้สิทธิ์เฉพาะกับผู้ใช้เฉพาะสำหรับทุกตารางในฐานข้อมูลได้อย่างไร
  • ฉันจะให้สิทธิ์ทั้งหมดแก่ผู้ใช้เฉพาะสำหรับตารางทั้งหมดในฐานข้อมูลได้อย่างไร
  • ถ้าเปรียบเทียบบทบาทจะเปรียบเทียบกับผู้ใช้เมื่อใช้GRANTหรือREVOKEเพื่อการอนุญาตของผู้ใช้ได้อย่างไร

คำตอบ:


48

บทบาทเป็นนิติบุคคลที่ฟังก์ชั่นที่สามารถเป็นผู้ใช้และ / หรือเป็นกลุ่ม บทบาทWITH LOGINสามารถใช้เป็นผู้ใช้เช่นคุณสามารถเข้าสู่ระบบได้ บทบาทใด ๆ สามารถทำงานเป็นกลุ่มรวมถึงบทบาทที่คุณสามารถเข้าสู่ระบบได้เช่นกัน ดังนั้น "ผู้ใช้" และ "กลุ่ม" จึงเป็นคำศัพท์ที่บ่งบอกถึงการใช้งานตามบทบาทที่ต้องการโดยไม่มีความแตกต่างระหว่างพวกเขา แม้จะอยู่ในรสชาติ PostgreSQL ของ SQL ทั้งสองก็ใช้มากหรือน้อยเป็นคำเหมือน ตัวอย่างเช่นเอกสารเกี่ยวกับCREATE USERsays:

CREATE USER เป็นนามแฝงของ CREATE ROLE แล้ว

การให้ทั้งหมด ... ดูคู่มือสำหรับ GRANTคุณอาจต้องการให้สิทธิ์ALL TABLES IN SCHEMA publicมากกว่าตารางทั้งหมดในฐานข้อมูล

ให้สิทธิ์บางอย่าง ... สิ่งเดียวกัน แต่แทนที่จะGRANT ALLใช้GRANT SELECT, INSERTเป็นตัวอย่าง ดูคู่มืออีกครั้ง

บทบาทคือผู้ใช้และ / หรือกลุ่ม คุณสามารถให้สิทธิ์กับบทบาทเท่านั้นเนื่องจากบทบาทเป็นสิ่งที่มีทั้งหมด


คำอธิบายที่ดี!
sharadov

ดังนั้น ... ไวยากรณ์สำหรับการให้สิทธิ์ทั้งหมดในตารางทั้งหมดในที่สาธารณะคีคืออะไร?
AlxVallejo

@AlxVallejo สิ่งนี้จะช่วยได้ ลองลิงค์ด้านบนหรืออ่านGRANTหน้าเอกสารที่มันแสดงรายการALL TABLES IN SCHEMA
Craig Ringer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.