PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL उपयोगकर्ता अनुमतियाँ

PostgreSQL में, सब कुछ भूमिका . की अवधारणा पर आधारित है ।

पहली बार macOS पर PostgreSQL इंस्टॉल करते समय, स्क्रिप्ट ने आपके macOS यूज़रनेम के साथ एक भूमिका बनाई , दी गई अनुमतियों की सूची के साथ।

PostgreSQL में कोई उपयोगकर्ता नहीं हैं, केवल भूमिकाएं हैं

psql postgres running चलाकर अपने टर्मिनल में, आप अपने macOS यूज़रनेम के साथ PostgreSQL में स्वचालित रूप से लॉगिन करेंगे, इसलिए बनाई गई भूमिका तक पहुँच प्राप्त करेंगे।

मेरे मामले में flaviocopes भूमिका बनाई गई थी, और मैं इसे \du . का उपयोग करके देख सकता हूं आदेश:

देखो? मेरे पास निम्नलिखित भूमिकाएं विशेषताएँ हैं डिफ़ॉल्ट रूप से:

  • Superuser
  • Create role
  • Create DB
  • Replication
  • Bypass RLS

और मैं किसी अन्य भूमिका का सदस्य नहीं हूं (इस पर बाद में)

नई भूमिका बनाना

CREATE ROLE . का उपयोग करके एक नई भूमिका बनाई जाती है आदेश:

CREATE ROLE <role>;

उदाहरण के लिए:

CREATE ROLE testing;

हमें एक नई भूमिका मिली है, जिसमें Cannot login भूमिका विशेषता। हमारा नया बनाया गया उपयोगकर्ता लॉगिन नहीं कर पाएगा।

आप \q . लिखकर कोशिश कर सकते हैं कमांड, और फिर psql postgres -U testing , लेकिन आपको यह त्रुटि दिखाई देगी:

इस समस्या को ठीक करने के लिए हमें LOGIN . जोड़ना होगा निर्माण के समय भूमिका विशेषता:

CREATE ROLE <role> WITH LOGIN;

यदि हम निम्न का उपयोग करके उस भूमिका को हटा देते हैं:

DROP ROLE <role>;

और WITH LOGIN जोड़ें इस बार:

DROP ROLE testing;
CREATE ROLE testing WITH LOGIN;

हम देख सकते हैं कि testing भूमिका लॉगिन कर सकती है, क्योंकि हमारे पास Cannot login . नहीं है इस बार भूमिका विशेषता:

\q . कमांड जोड़कर प्रयास करें छोड़ने के लिए, और फिर psql postgres -U testing :

ध्यान दें कि संकेत =# . से बदला गया करने के लिए => क्योंकि हमारे पास Superuser नहीं है भूमिका विशेषता अब।

भूमिका में पासवर्ड जोड़ना

पिछले Create role . में कमांड हमने पासवर्ड के बिना एक भूमिका बनाई। बेशक (सुरक्षित) पासवर्ड होना बहुत जरूरी है। आप PASSWORD . का उपयोग करके पासवर्ड जोड़ सकते हैं कीवर्ड:

CREATE ROLE <role> WITH LOGIN PASSWORD '<password>';

उपयोगकर्ता बनाएं

LOGIN . के साथ भूमिकाओं को परिभाषित करने का एक वैकल्पिक तरीका स्वचालित रूप से जोड़ी गई विशेषता (प्रभावी रूप से ऐसे उपयोगकर्ता बनाना जो लॉगिन कर सकते हैं) का उपयोग करना है CREATE USER :

CREATE USER <role> PASSWORD '<password>';

भूमिका में भूमिका विशेषता जोड़ना

भूमिका विशेषता को बाद में ALTER ROLE . का उपयोग करके किसी भूमिका में जोड़ा जा सकता है आदेश।

मान लें कि हमने LOGIN विशेषता के बिना एक भूमिका बनाई है:

CREATE ROLE <username> PASSWORD '<password>';

हम इसका उपयोग करके इसे जोड़ सकते हैं:

ALTER ROLE <role> WITH LOGIN;

बिल्ट-इन रोल एट्रिब्यूट

हमने देखा LOGIN भूमिका विशेषता पहले से ही, किसी भूमिका को लॉगिन करने की अनुमति देने के लिए।

लेकिन अन्य अंतर्निहित भूमिका विशेषताएँ क्या हैं जिनका हम उपयोग कर सकते हैं?

  • LOGIN / NOLOGIN :PostgreSQL में लॉगिन करने की अनुमति दें (या नहीं)
  • SUPERUSER / NOSUPERUSER :सुपरयुसर अनुमतियों की अनुमति दें (या नहीं)। एक डेटाबेस सुपरयूज़र LOGIN . को छोड़कर, अन्य अनुमति जाँचों को बायपास कर देगा (इसे अलग से दिया जाना चाहिए)।
  • CREATEDB / NOCREATEDB :अनुमति दें (या नहीं) नए डेटाबेस बनाने की क्षमता
  • CREATEROLE / NOCREATEROLE :अनुमति दें (या नहीं) नई भूमिकाएँ बनाने की क्षमता
  • CREATEUSER / NOCREATEUSER :अनुमति दें (या नहीं) नए उपयोगकर्ता बनाने की क्षमता
  • INHERIT / NOINHERIT :अनुमति दें (या नहीं) विशेषाधिकारों को इनहेरिट करने योग्य बनाने की क्षमता
  • Replication / NOREPLICATION :प्रतिकृति अनुमति दें (या नहीं) (एक उन्नत विषय जिसे हम कवर नहीं करेंगे)

समूह भूमिकाएं

PostgreSQL में, उपयोगकर्ताओं का कोई समूह नहीं है।

इसके बजाय आप कुछ अनुमतियों के साथ भूमिकाएँ बना सकते हैं, और फिर उन भूमिकाओं को अन्य भूमिकाओं के लिए प्रदान कर सकते हैं।

भूमिकाएं उन्हें दी गई भूमिकाओं की अनुमतियां इनहेरिट करेंगी, यदि उन भूमिकाओं में INHERIT विशेषता है।

एक समूह भूमिका बनाएं

समूह भूमिका बनाने के लिए, टाइप करें

CREATE ROLE <groupname>;

वाक्य रचना एक भूमिका बनाने के समान है।

एक बार समूह भूमिका बन जाने के बाद, आप GRANT . का उपयोग करके समूह भूमिका में भूमिकाएँ जोड़ सकते हैं :

GRANT <groupname> TO <role>

उदाहरण के लिए, हम एक flavio बना सकते हैं उपयोगकर्ता की भूमिका, एक "कर्मचारी" समूह भूमिका, और उपयोगकर्ता को समूह भूमिका के लिए असाइन करें:

CREATE USER flavio PASSWORD 'superSecret123$';
CREATE ROLE employee;
GRANT employee TO flavio;

आप निम्न का उपयोग करके किसी भूमिका को समूह भूमिका से निकाल सकते हैं:

REVOKE <groupname> FROM <username>

उदाहरण:

REVOKE employee FROM flavio;

समूह भूमिका विशेषताएँ

डिफ़ॉल्ट रूप से, किसी भूमिका को समूह भूमिका में जोड़ने से नहीं भूमिका को समूह भूमिका से इनहेरिट विशेषताएँ (अनुमतियाँ) बनाएँ।

आपको INHERIT . के साथ समूह भूमिका बनानी होगी विशेषता।

मान लीजिए कि आप कर्मचारी समूह की भूमिका बनाते हैं, और उसे CREATEDB . असाइन करते हैं विशेषता:

CREATE ROLE employee WITH CREATEDB INHERIT;

अब INHERIT . का उपयोग करके एक नई भूमिका बनाएं :

CREATE ROLE flavio;
GRANT employee TO flavio;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में मुद्रा के रूप में संख्याओं को कैसे प्रारूपित करें

  2. गोलांग में *DB.exec() या तैयार कथनों का भी उपयोग क्यों करें?

  3. रेल में Postgresql पर तैयार वक्तव्य

  4. PostgresPlus Advanced Server 9.3Beta में नई Oracle-संगतता सुविधाएँ

  5. PostgreSQL -ग्रुप बाय क्लॉज में दिखाई देना चाहिए या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए