एक्सटेंशन पर डॉक्स से ,
सुपरयुसर (बूलियन) यदि यह पैरामीटर सही है (जो कि डिफ़ॉल्ट है), केवल सुपरयूजर ही एक्सटेंशन बना सकते हैं या इसे नए संस्करण में अपडेट कर सकते हैं । यदि इसे गलत पर सेट किया जाता है, तो इंस्टॉलेशन या अपडेट स्क्रिप्ट में कमांड निष्पादित करने के लिए आवश्यक विशेषाधिकारों की आवश्यकता होती है।
मान सेट नहीं किया गया है pgcrypto.control
, इसलिए यह डिफ़ॉल्ट रूप से सत्य है जिसके लिए SuperUser की आवश्यकता है।
इसका मतलब है आप नहीं कर सकते हैं CREATE EXTENSION
डेटाबेस का मात्र स्वामी के रूप में, क्या पर डॉक्स के बावजूद एक्सटेंशन बनाने के विश्वास करने के लिए आप का नेतृत्व।
मैं इसे करने के लिए कड़ी मेहनत की कोशिश की false
, और कोई खुशी नहीं है। सी एक अविश्वसनीय भाषा है और आपको मिलेगा
त्रुटि: अनुमति भाषा सी के लिए इनकार कर दिया
से pg_language पर डॉक्स
केवल सुपरसर्स ही अविश्वसनीय भाषाओं में कार्य कर सकते हैं।
... बेशक आप सुपरयुजर के रूप में c
भरोसेमंद बन सकते हैं UPDATE pg_language set lanpltrusted = true where lanname = 'c';
। फिर CREATE EXTENSION pgcrypto
गैर-सुपरसुसर के रूप में ठीक काम करेगा। लेकिन, यह एक बुरे विचार की तरह लगता है अगर आपको अपने उपयोगकर्ताओं को अपने विस्तार निर्देशिका में स्रोत अपलोड करने और फिर इसे डेटाबेस में स्थापित करने के बारे में चिंता करनी है। यह कहना है, मैं दूर नहीं जाना होगा। मुझे इस बिल्ली की त्वचा का एक और रास्ता मिल जाएगा।
template1
और फिर से प्रत्येक उपयोगकर्ता डेटाबेस बनाने की कोशिशtemplate1
की हैCREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
?