2015-10-07 8 views
7

डेटाबेस आईडी के आधार पर idd_owner पर निर्भर करता है तो उपयोगकर्ता पोस्टग्रेज़ में ड्रॉप कैसे करें।यदि उपयोगकर्ता ऑब्जेक्ट्स

डेटाबेस में 2 डेटा स्कीमा हैं: public और firma1। उपयोगकर्ता को इस डेटाबेस और वस्तुओं में सीधे या परोक्ष रूप से अधिकार दिए गए अधिकार हो सकते हैं। उपयोगकर्ता किसी भी वस्तु का मालिक नहीं है। इसने केवल अधिकार दिए हैं।

ऐसे उपयोगकर्ता को कैसे छोड़ें?

मैं

revoke all on all tables in schema public,firma1 from "vantaa" cascade; 
revoke all on all sequences in schema public,firma1 from "vantaa" cascade; 
revoke all on database idd from "vantaa" cascade; 
revoke all on all functions in schema public,firma1 from "vantaa" cascade; 
revoke all on schema public,firma1 from "vantaa" cascade; 
revoke idd_owner from "vantaa" cascade; 
ALTER DEFAULT PRIVILEGES IN SCHEMA public,firma1 revoke all ON TABLES from "vantaa"; 
DROP ROLE if exists "vantaa" 

कोशिश की, लेकिन त्रुटि

role "vantaa" cannot be dropped because some objects depend on it 
DETAIL: privileges for schema public 
DROP ROLE if exists "vantaa" 

मिला कैसे इतना है कि उपयोगकर्ता कर सकते हैं गिरा इसे ठीक करने के?

एसक्यूएल या plpgsql विधि कैसे बनाएं जो उपयोगकर्ता नाम को पैरामीटर के रूप में लेता है और डेटा को छोड़ दिए बिना सभी मामलों में इस उपयोगकर्ता को छोड़ देता है?

का उपयोग Postgres 9.1+

उत्तर

2

उपयोगकर्ता छोड़ने इससे पहले कि आप चला सकते हैं:

REASSIGN OWNED BY vantaa TO <newuser> 

तुम सिर्फ postgres के लिए पुन: असाइन सकता है अगर आप के लिए है कि पुन: असाइन करने जो नहीं पता ...

REASSIGN OWNED BY vantaa TO postgres; 
+4

मैंने कोशिश की लेकिन ऑब्जेक्ट को 'ऑब्जेक्ट्स को फिर से सौंपने के लिए अनुमति अस्वीकार कर दी गई। उपयोगकर्ता जो इस आदेश को चलाता है वह सुपरसियर नहीं है। मैं ऐसे उपयोगकर्ताओं को कुछ अधिकार जोड़ सकता हूं जो इस आदेश को आमंत्रित करते हैं यदि इससे मदद मिलती है। कैसे ठीक करना है ? – Andrus

+0

मैंने भी वेंटा के स्वामित्व में idd_owner के स्वामित्व की कोशिश की लेकिन मुझे एक ही त्रुटि मिली। – Andrus

+1

मैंने उपयोगकर्ता पोस्टग्रेज़ के तहत पुन: असाइन कमांड चलाया। उस ड्रॉप उपयोगकर्ता के बाद भी एक ही त्रुटि का कारण बनता है। – Andrus

0

आपका पुन: असाइनमेंट विफल हो सकता है। आप एक नया उपयोगकर्ता/भूमिका को पुन: असाइन जब - आप इसे वर्तमान में चयनित डेटाबेस पर करते हैं - वर्तमान उपयोगकर्ता 'से' भूमिका से संबंधित होना चाहिए और 'को' (उन्हें अनुदान और बाद उन्हें निरस्त)

अंश मेरा एक शेल स्क्रिप्ट (कुछ चीजें छोड़ी गईं)

# The DROP USER operation will fail if this user is the owner of an existing schema, table, index... 
# The user creating a resource owns it. It should transfer the ownership to the role 
# When reassigning, the current user needs to have the <<roles>> associated to BY and TO to execute the command. 
GRANT $_roleservice TO $_superuser;      
GRANT $_account TO $_superuser;                 
REASSIGN OWNED BY $_account TO $_roleservice;    
# dropping the user removes it from the current user list of roles/users 
DROP USER $_account; 
REVOKE $_roleservice FROM $_superuser; 
संबंधित मुद्दे