मैं 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को मौजूदा और मौजूदा बनाएं । लेकिन क्या होता है जब मैं अगला प्रवास चलाता हूं। यह फिर से समस्या को फिर से बनाने के स्वामित्व में नहीं होगा ?!?meltemimyapp_groupmyapp