2010-05-17 8 views
5

मैंने postgres privilleges के तहत अपने postgresql सर्वर पर पीएल/पायथन स्थापित किया है:PostgreSQL: सामान्य उपयोगकर्ता के रूप में पाइथन संग्रहीत प्रक्रियाओं को चला रहा है

netherlands=# CREATE PROCEDURAL LANGUAGE plpythonu; 
CREATE LANGUAGE  

अब मुझे अनुमतियां देने की आवश्यकता है ताकि मैं इसे सामान्य उपयोगकर्ता के रूप में उपयोग कर सकूं:

netherlands=# GRANT ALL ON LANGUAGE plpythonu TO adam; 
ERROR: language "plpythonu" is not trusted 
HINT: Only superusers can use untrusted languages. 

मुझे पता है कि अजगर एक 'भरोसेमंद' भाषा नहीं है, लेकिन मैं यहां अपनी संभावनाएं लेने के लिए तैयार हूं। PostgreSQL को मनाने के लिए किसी भी तरह से मुझे एक सामान्य उपयोगकर्ता के रूप में पाइथन संग्रहित प्रक्रियाओं को चलाने के लिए?

+0

GRANT [उपयोग] भाषाओं पर इसका मतलब है प्रश्न में उपयोगकर्ता उस भाषा में काम करता है बना सकते हैं। एक बार बनाया गया है तो आपको अन्य उपयोगकर्ताओं को उनका उपयोग करने की अनुमति देने के लिए अनुदान निष्पादन का उपयोग करना होगा। –

+0

काम नहीं करता, जैसा कि ऊपर उल्लेख एक ही त्रुटि संदेश के साथ। –

उत्तर

7
UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu'; 
+0

यह एक नई सुविधा है? –

+0

यह 9.1 में काम करता है, कम से कम। पिछले संस्करणों के बारे में निश्चित नहीं है। – claymation

+0

तो यह मेरे लिए नया है, मैं 8.4 के साथ काम कर रहा हूँ। हालांकि, मैं यह सही जवाब के रूप में चिह्नित कर देंगे पीढ़ियों :-) –

1

दुर्भाग्य से, मुझे विश्वास नहीं यह जब तक आपके postgres खाता सुपर उपयोगकर्ता पहुँच गया है अविश्वस्त दुभाषियों को चलाने के लिए संभव है। यदि आप डेटाबेस सर्वर व्यवस्थापक हैं, तो createuser आपको पूछेगा कि नया खाता सुपरसियर होना चाहिए या नहीं।

'अविश्वसनीय' ध्वज का मतलब यह नहीं है कि रनटाइम अस्थिर या अविश्वसनीय है, बस यह कि सुरक्षा मॉडल एक संग्रहित प्रक्रिया दुभाषिया के रूप में बहुत अच्छी तरह से फिट नहीं होता है। यह आपके संग्रहित प्रक्रियाओं, या संभावित विनाशकारी सुरक्षा कीड़ों से विशेषाधिकार वृद्धि हो सकती थी।

आप postgres उपयोगकर्ता के रूप में चलाने के लिए या एक सुपर उपयोगकर्ता खाता बनाने के लिए असमर्थ हैं, तो मुझे डर है कि आप pl/अजगर को छोड़ करना होगा हूँ, और सुझाव है कि आप बाहर की जाँच PL/pgSQL बजाय। http://www.postgresql.org/docs/8.3/interactive/plpgsql.html

1

GRANT [उपयोग] भाषाओं पर इसका मतलब है प्रश्न में उपयोगकर्ता उस भाषा में काम करता है बना सकते हैं। एक बार बनाया गया है तो आपको अन्य उपयोगकर्ताओं को उनका उपयोग करने की अनुमति देने के लिए अनुदान निष्पादन का उपयोग करना होगा।

[email protected]:~$ psql 
Welcome to psql 8.3.9, the PostgreSQL interactive terminal. 

Type: \copyright for distribution terms 
     \h for help with SQL commands 
     \? for help with psql commands 
     \g or terminate with semicolon to execute query 
     \q to quit 

postgres=# \c plpythonu_test 
You are now connected to database "plpythonu_test". 
plpythonu_test=# create language plpythonu; 
CREATE LANGUAGE 
plpythonu_test=# CREATE FUNCTION pymax (a integer, b integer) 
plpythonu_test-# RETURNS integer 
plpythonu_test-# AS $$ 
plpythonu_test$# if a > b: 
plpythonu_test$#  return a 
plpythonu_test$# return b 
plpythonu_test$# $$ LANGUAGE plpythonu; 
CREATE FUNCTION 
plpythonu_test=# grant execute on function pymax (a integer, b integer) to plpythonu_test; 
GRANT 
plpythonu_test=# 



C:\Users\milen>psql.exe -U plpythonu_test -h ... 
Password for user plpythonu_test: 
psql (8.4.4, server 8.3.9) 
WARNING: psql version 8.4, server version 8.3. 
     Some psql features might not work. 
WARNING: Console code page (866) differs from Windows code page (1251) 
     8-bit characters might not work correctly. See psql reference 
     page "Notes for Windows users" for details. 
Type "help" for help. 

plpythonu_test=> select pymax(1,2); 
pymax 
------- 
    2 
(1 row) 


plpythonu_test=> 
संबंधित मुद्दे

 संबंधित मुद्दे