สิทธิ์ใน INSERT ใน PostGIS / QGIS


12

ฉันกำลังพยายามกำหนดสิทธิ์ในฐานข้อมูลของฉันสำหรับผู้ใช้เพื่อให้สามารถอัปเดต, แทรก, ลบและแน่นอนว่าเลือกบนตารางทางภูมิศาสตร์

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

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

ฉันสามารถจัดการกับสิ่งนั้นได้โดยตั้งค่าฟิลด์เป็นไม่สามารถแก้ไขได้ในการกำหนดสไตล์ แต่เนื่องจากใครก็ตามสามารถตั้งค่าตามที่พวกเขาโปรดฉันต้องการทางเลือกที่ปลอดภัยมากขึ้น

ใช้งาน QGIS 2.14, PostGIS 2.3 สำหรับ PostgreSQL 9.5


คุณใช้คำสั่ง GRANT SQL เพื่อตั้งค่าสิทธิ์ผู้ใช้ (สิทธิ์) หรือไม่ คุณให้ INSERT บนโต๊ะของคุณหรือไม่
Zoltan

@Ztantan ใช่ข้อความค้นหาของฉันดูเหมือนGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair

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

1
@Micha ตกลงแล้วมันทำให้รู้สึกรวมพูดเช่นนั้น ... ฉันเดาว่าฉันยังมีวิธีแก้ปัญหาอื่นโดยทริกเกอร์เฉพาะคอลัมน์ใน INSERT ไม่ทำอะไรและในการปรับปรุงไม่สำคัญสำหรับคีย์หลักซึ่งจะป้องกันการแก้ไขด้วยตนเองของ คีย์หลัก ขอบคุณ
GuiOm Clair

3
หรือคุณสร้างมุมมองของตารางยกเว้นคอลัมน์ SERIAL และให้สิทธิ์เข้าถึงมุมมองนั้นเท่านั้น
JoeBe

คำตอบ:


0

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

เกี่ยวกับความคิดเห็นของคุณ: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyฉันไม่แน่ใจว่าจะใช้งานได้ เมื่อแทรกแถวใหม่จะต้องสร้างคีย์หลักใหม่อย่างชัดเจน คุณไม่ต้องการหลีกเลี่ยงสิ่งนั้น

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