ฉันสับสนเกี่ยวกับการตั้งค่าสิทธิ์ใน PostgreSQL
ฉันมีบทบาทเหล่านี้:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication | {}
meltemi | Create role, Create DB | {rails}
rails | Create DB, Cannot login | {}
myapp | | {rails}
และฐานข้อมูล:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
ผู้ใช้myappไม่มีปัญหาในการสืบค้นmyapp_productionฐานข้อมูลเพิ่มและลบบันทึก ฉันต้องการmeltemiที่จะสามารถสืบค้นฐานข้อมูลเดียวกันได้ ดังนั้นฉันสร้างบทบาทrailsซึ่งเป็นเจ้าของฐานข้อมูลและทำให้ทั้งสองmeltemiและสมาชิกของmyapp railsแต่ฉันยังคงได้รับpermission denied for relationข้อผิดพลาด Meltemiสามารถดูสคีมา แต่ไม่สามารถสืบค้น DB ได้
ฉันเพิ่งสังเกตเห็น (มี\dtคำสั่ง) ที่myappเป็นเจ้าของตาราง:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
ตารางถูกสร้างขึ้นผ่าน ORM (การโยกย้าย ActiveRecord ของ Rails)
ฉันรู้ว่าการอนุญาตแตกต่างกันมากใน PostgreSQL (ต่างจาก MySQL และอื่น ๆ ที่ฉันเคยใช้) ฉันควรตั้งค่าฐานข้อมูลของฉันอย่างไรเพื่อให้ผู้ใช้รายอื่นสามารถเข้าถึงได้ บางคนควรสามารถที่จะ CRUD แต่คนอื่นอาจจะสามารถอ่าน ฯลฯ
ขอบคุณสำหรับความช่วยเหลือ ขออภัยฉันรู้ว่านี่เป็นคำถามพื้นฐาน แต่ฉันไม่สามารถหาคำตอบได้ด้วยตนเอง
myappแทนที่จะเป็นrailsข้างบน? เนื่องจากmyappเป็นเจ้าของตาราง (ฉันไม่เคยระบุไว้เลยว่าการย้ายข้อมูลต้องมี) อย่างไรก็ตามมันจะคล้าย ๆ ทำให้รู้สึกว่าผมเปลี่ยนmyappไปmyapp_groupแล้วทำให้ผู้ใช้ใหม่myappที่ราง app ที่จะใช้ในการเชื่อมต่อกับฐานข้อมูล ทำให้myappและมีอยู่meltemiทั้งสมาชิกของmyapp_groupบทบาท แต่จะเกิดอะไรขึ้นเมื่อฉันเรียกใช้การย้ายข้อมูลครั้งต่อไป มันจะไม่ได้เป็นเจ้าของโดยmyappการสร้างปัญหาซ้ำแล้วซ้ำอีก?!