GRANT CONNECT ON DATABASE <database> TO <user>
जारी किए गए उपयोगकर्ताओं को आप कैसे देखते हैं?PostgreSQL: डेटाबेस कनेक्ट अनुमतियां देखें
- \ डी पी - सूचियों तालिका/अनुमतियां देखें
- \ dn + - सूचियों स्कीमा अनुमतियाँ
- \ एल + सभी उपयोगकर्ताओं को डेटाबेस
GRANT CONNECT ON DATABASE <database> TO <user>
जारी किए गए उपयोगकर्ताओं को आप कैसे देखते हैं?PostgreSQL: डेटाबेस कनेक्ट अनुमतियां देखें
मैं से psql उपयोग कर रहा हूँ का उपयोग कर सकते की सूची नहीं है postgres 8.4 और postgres 9.0, और आदेश \l
या \l+
मुझे स्तंभ Access Privileges
मैं कहाँ है देता प्रविष्टि:
<user_name>=c/<database_name>
और इससे पहले मैंने उपयोगकर्ता को कनेक्ट विशेषाधिकार दिया था जैसा आप चाहते थे।
जैसा कि यह पृष्ठ http://www.postgresql.org/docs/9.0/static/sql-grant.html पर बताता है, c
पत्र यहां Connect
है।
सही, लेकिन यह सभी उपयोगकर्ताओं को सूचीबद्ध नहीं कर रहा है। मुझे लगता है कि यह एक सीमा हो सकती है। या शायद pg_hba.conf पहले कुछ कर रहा है। – vol7ron
थोड़ा अजीब अगर \ l + आदेश केवल उन उपयोगकर्ताओं को प्रदर्शित करता है जिनके पास डेटाबेस से कनेक्ट करने के लिए अनुमति/विशेषाधिकार है। मैं खुद को PostgreSQL 8.4 स्थापना (उबंटू 10.04 एलटीएस) पर दोहराना नहीं कर सका। आप कौन सा संस्करण उपयोग कर रहे हैं?
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';
आप बस एक उपयोगकर्ता आप कर सकते थे जाँच करना चाहते हैं:
वैसे भी, शायद आप अनुमान उपयोगकर्ता सही विशेषाधिकार हैं या नहीं कि विशेष रूप से डेटाबेस के लिए और कहा कि से एसीएल के पकड़े तालिका की जांच कर सकता ऐसा कुछ करें:
SELECT * FROM has_database_privilege('username', 'database', 'connect');
व्याख्या करने के लिए अनुमति/विशेषाधिकार कैसे हैं? विशेषाधिकार इस तरह पढ़ने के लिए कर रहे हैं:
user = privileges/granted by
छोड़ना उपयोगकर्ता मतलब यह है कि सार्वजनिक विशेषाधिकार है, यानी सभी भूमिकाओं दी जाती है। उदाहरण के लिए यदि विशेषाधिकार =Tc/postgres
है तो सभी भूमिकाएं उस विशेष डेटाबेस में अस्थायी तालिकाओं को कनेक्ट और निर्माण कर सकती हैं और यह postgres
उपयोगकर्ता है जो विशेषाधिकार प्रदान करता है।
PostgreSQL साइट http://www.postgresql.org/docs/9.2/static/sql-grant.html पर विभिन्न विशेषाधिकारों को समझाते हुए PostgreSQL साइट पर एक सारांश है।
rolename=xxxx -- privileges granted to a role
=xxxx -- privileges granted to PUBLIC
r -- SELECT ("read")
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)
* -- grant option for preceding privilege
/yyyy -- role that granted this privilege
जॉन, मैं इसे देख लूंगा। मुझे विश्वास है कि मैं 8.4 संस्करण पर भी परीक्षण कर रहा था। मुझे लगता है कि मैं इसे पूछने में सक्षम हो सकता हूं, लेकिन मैं उम्मीद कर रहा था कि ऐसा करने के लिए शॉर्टकट कमांड होगा। भले ही, मुझे यह देखना होगा कि मुझे अनोखा मामला याद है या नहीं, जो इसे मेरे ध्यान में लाया। – vol7ron
कुछ समय बीतने के बाद से मैंने यह प्रश्न देखा। 8.4 और नहीं, मुझे पता है कि ऐसे खाते हैं जो डेटाबेस में पहुंच सकते हैं जो सूची में नहीं दिखाए जा रहे हैं ... जब तक ...प्रश्न: इसका अर्थ यह नहीं है कि जब कोई उपयोगकर्ता '= टीसी/
हां। वैसे भी अच्छा सवाल है, मैंने जवाब अपडेट किया है कि विशेषाधिकारों का अर्थ कैसे लिया जाता है। –
वाह यह सवाल पुराना है और ऐसा लगता है कि मैंने कभी जवाब नहीं चुना। मुझे लगता है कि ऐसा इसलिए है क्योंकि उस समय मैं कुछ और ढूंढ रहा था। मैंने थोड़ी देर में इस पर ध्यान नहीं दिया है, इसलिए अगर यह गलत है तो मैं क्षमा चाहता हूं। मुझे लगता है कि pg_hba.conf फ़ाइल उपयोगकर्ताओं को एक सर्वर से कनेक्ट करने की अनुमति देती है, बिना किसी स्पष्ट अनुदान के। इसलिए, जिन डेटाबेसों को लॉक नहीं किया गया है उन्हें किसी भी व्यक्ति द्वारा वर्चुअल रूप से अनुमति दी जा सकती है, जिसे '\ l' कमांड कभी भी नहीं पता हो सकता है। – vol7ron