ฉันสับสนเกี่ยวกับการตั้งค่าสิทธิ์ใน 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
การสร้างปัญหาซ้ำแล้วซ้ำอีก?!