मैं 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 (रेल्स एक्टिव एक्टिव माइग्रेशन) के माध्यम से बनाया गया था।
मुझे पता है कि PostgreSQL में प्राधिकरण बहुत अलग है (जैसा कि MySQL और अन्य मैंने इस्तेमाल किया है) के विपरीत। मुझे अपना डेटाबेस कैसे सेट करना चाहिए ताकि विभिन्न उपयोगकर्ता इसे एक्सेस कर सकें। कुछ को CRUD करने में सक्षम होना चाहिए, लेकिन अन्य केवल पढ़ने में सक्षम हो सकते हैं, आदि ...
किसी भी मदद के लिए धन्यवाद। क्षमा करें, मुझे पता है कि यह एक बहुत ही मूल प्रश्न है लेकिन मैं स्वयं इसका उत्तर नहीं खोज पाया हूँ।
myapp
बजाय उपयोग करने के लिए हो सकते हैंrails
? क्योंकिmyapp
तालिकाओं का स्वामी है (मैंने कभी यह निर्दिष्ट नहीं किया है कि, माइग्रेशन होना आवश्यक है)। वैसे भी, यह समझ में आता है कि अगर मेरा नाम बदल दियाmyapp
जाता हैmyapp_group
और फिर एक नया उपयोगकर्ता बना दिया जाता हैmyapp
जो रेल एप्लिकेशन को DB से कनेक्ट करने के लिए उपयोग करेगा। भूमिका के दोनों सदस्योंmyapp
को मौजूदा और मौजूदा बनाएं । लेकिन क्या होता है जब मैं अगला प्रवास चलाता हूं। यह फिर से समस्या को फिर से बनाने के स्वामित्व में नहीं होगा ?!?meltemi
myapp_group
myapp