इस बिंदु पर, अनुदान देने का कोई अधिकार नहीं है, यह सुपरयुसर के लिए हार्डकोड है। मेलिंग सूची में हाल ही में इस पर चर्चा की गई है, और अगर कोई इस पर काम करने का समय पाता है तो 9.5 में बदल सकता है।
एक वर्कअराउंड के रूप में, आप एक SECURITY DEFINER
फ़ंक्शन बना सकते हैं जो सुपरयुसर के स्वामित्व में है, और आपके द्वारा इच्छित क्वेरी चलाता है। यह गैर-सुपरयुवर्स को pg_stat_activity
फ़ंक्शन को कॉल करके सामग्री को देखने की अनुमति देगा ।
जैसे, सुपरयुजर के रूप में दौड़ें:
CREATE FUNCTION get_sa() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;
CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa();
GRANT SELECT ON pg_stat_activity_allusers TO public;
ध्यान दें कि नि: शुल्क प्रवेश pg_stat_activity
एक कारण के लिए प्रतिबंधित है। अन्य लोगों के प्रश्नों से संवेदनशील जानकारी को टटोलना संभव है - उदाहरण के लिए कल्पना करें कि क्या कोई अन्य उपयोगकर्ता pgcrypto का उपयोग कर रहा था। public
आपको अधिकार देने के बजाय उन्हें केवल एक विशिष्ट उपयोगकर्ता या भूमिका के लिए अनुदान देना चाहिए जो निगरानी के लिए सरोगेट उपयोगकर्ता के रूप में कार्य करना है।