PostgreSQL - บทบาท“ สาธารณะ” คือใครหรืออะไร


11

ฉันกำลังดูinformation_schema.role_table_grantsเมื่อฉันเห็นpublicในgranteeคอลัมน์จากนั้นฉันได้ตรวจสอบที่information_schema.enabled_rolesแต่role_nameไม่มีอยู่

=> ใครหรืออะไรคือpublicบทบาท

คำตอบ:


9

ได้จากคู่มือ:

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


7

ในขณะนี้เป็นจริงมันไม่ได้เป็นภาพเต็ม สาธารณะยังทำหน้าที่เป็นบทบาทโดยนัยที่บทบาทอื่นเป็นของและที่มีสิทธิ์ของตนเองไม่ได้สะท้อนและรายงานที่ได้รับสืบทอดมาเสมอ

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

REVOKE ALL ON SCHEMA public FROM PUBLIC;

ในทำนองเดียวกันก็ให้สิทธิ์ในระดับฐานข้อมูลเพื่อลบการใช้งาน

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

บทความดีดีที่นี่: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

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