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

डेटाबेस उपयोगकर्ता प्रबंधन:मारियाडीबी के लिए प्रबंधन भूमिकाएं

यह हमेशा एक सिरदर्द होता है... आपको एक नई उपयोगकर्ता भूमिका जोड़ने या कुछ विशेषाधिकार बदलने की आवश्यकता होती है, और आपको इसे एक-एक करके... एक-एक करके असाइन करने की आवश्यकता होती है। यह एक नियमित कर्तव्य है, विशेष रूप से बड़े संगठनों में, या ऐसी कंपनी में जहां आपके पास एक जटिल विशेषाधिकार संरचना है, या यहां तक ​​कि यदि आपको बड़ी संख्या में डेटाबेस उपयोगकर्ताओं का प्रबंधन करना है।

उदाहरण के लिए, मान लें कि आपको सभी QA टीम के लिए एक विशिष्ट डेटाबेस में अद्यतन विशेषाधिकार जोड़ने की आवश्यकता है, यदि वे पांच की टीम हैं तो कोई समस्या नहीं है, लेकिन यदि वे 50... या 100... कठिन होना। बेशक, आप हमेशा इसके लिए एक स्क्रिप्ट लिख सकते हैं, लेकिन इस तरह हमेशा जोखिम होता है।

इस ब्लॉग में, हम देखेंगे कि कैसे हम भूमिकाओं का उपयोग करके और मारियाडीबी के साथ उनका उपयोग करने के बारे में विशिष्ट युक्तियों के साथ इस डेटाबेस उपयोगकर्ता प्रबंधन समस्या को हल कर सकते हैं।

भूमिका क्या है?

डेटाबेस की दुनिया में, भूमिका विशेषाधिकारों का एक समूह है जिसे एक या अधिक उपयोगकर्ताओं को सौंपा जा सकता है, और एक उपयोगकर्ता को एक या अधिक भूमिकाएँ सौंपी जा सकती हैं। तुलना करने के लिए, यह Linux OS पर एक समूह की तरह है।

यदि हम QA टीम पर अद्यतन विशेषाधिकार के बारे में पिछला उदाहरण देखते हैं, यदि हमने QA भूमिका बनाई है, और सभी QA सदस्यों को यह भूमिका सौंपी गई है, तो यह सदस्यों की संख्या से कोई फर्क नहीं पड़ता, आपको केवल विशेषाधिकार बदलने की आवश्यकता है इस QA भूमिका पर और इसे सभी QA उपयोगकर्ताओं के लिए प्रचारित किया जाएगा।

मारियाडीबी पर भूमिकाएं

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

डेटाबेस उपयोगकर्ता के रूप में, जब आप डेटाबेस तक पहुँचते हैं (यदि कोई डिफ़ॉल्ट भूमिका नहीं है) तो आपको भूमिका निर्धारित करनी होगी, और यदि आवश्यक हो तो आप SET ROLE कथन के साथ भूमिका बदल सकते हैं।

आवेदन पक्ष से, आपको यह कार्य करने के लिए क्वेरी करने से पहले भूमिका निर्धारित करने (या डिफ़ॉल्ट का उपयोग करने) में सक्षम होना चाहिए, इसलिए पुराने अनुप्रयोगों में, इसे लागू करना जटिल हो सकता है।

आइए मारियाडीबी पर भूमिकाओं के लिए कुछ विनिर्देश देखें।

  • वर्तमान उपयोगकर्ता के लिए एक ही समय में केवल एक भूमिका सक्रिय हो सकती है।
  • मारियाडीबी 10.1 के बाद से हमारे पास एक डिफ़ॉल्ट भूमिका है। जब उपयोगकर्ता कनेक्ट होता है तो यह भूमिका स्वचालित रूप से सक्षम हो जाती है।
  • भूमिकाओं को स्मृति में संग्रहीत किया जाता है।

भूमिकाओं की जांच कैसे करें

MariaDB पर इसे जांचने के कई तरीके हैं:

  • अनुदान दिखाएं [के लिए (उपयोगकर्ता | भूमिका)]:वर्तमान उपयोगकर्ता के लिए या किसी विशिष्ट के लिए अनुदान की सूची बनाएं।
    MariaDB [testing]> SHOW GRANTS for [email protected]'%';
    +----------------------------------------------------------------------------------------------------------+
    | Grants for [email protected]%                                                                                   |
    +----------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
    +----------------------------------------------------------------------------------------------------------+
    1 row in set (0.000 sec)
  • mysql.user से उपयोगकर्ता चुनें जहां is_role='Y':डेटाबेस में बनाई गई भूमिकाओं की सूची बनाएं।
    MariaDB [testing]> SELECT user FROM mysql.user WHERE is_role='Y';
    +--------+
    | user   |
    +--------+
    | qateam |
    +--------+
    1 row in set (0.000 sec)
  • चुनें * info_schema.applicable_roles से:यह वर्तमान उपयोगकर्ता के लिए उपलब्ध भूमिकाओं की एक सूची है।
    MariaDB [testing]> SELECT * FROM information_schema.applicable_roles;
    +-------------+-----------+--------------+------------+
    | GRANTEE     | ROLE_NAME | IS_GRANTABLE | IS_DEFAULT |
    +-------------+-----------+--------------+------------+
    | [email protected]%  | qateam    | NO           | NO         |
    +-------------+-----------+--------------+------------+
    1 row in set (0.000 sec)
  • चुनें * info_schema.enabled_roles से:वर्तमान सक्रिय भूमिकाओं की सूची बनाएं।
    MariaDB [testing]> SELECT * FROM information_schema.enabled_roles;
    +-----------+
    | ROLE_NAME |
    +-----------+
    | qateam    |
    +-----------+
    1 row in set (0.000 sec)
  • mysql.roles_mapping से * चुनें:भूमिकाओं और उपयोगकर्ता अनुदान के बीच संबंधों की सूची बनाएं।
    MariaDB [testing]> SELECT * FROM mysql.roles_mapping;
    +-----------+-----------+--------+--------------+
    | Host      | User      | Role   | Admin_option |
    +-----------+-----------+--------+--------------+
    | localhost | root      | qateam | Y            |
    | %         | testuser  | qateam | N            |
    +-----------+-----------+--------+--------------+
    2 rows in set (0.000 sec)

MariaDB पर भूमिकाओं को कैसे प्रबंधित करें

आइए एक उदाहरण देखें कि इसे मारियाडीबी पर कैसे प्रबंधित किया जाए। इस मामले में, हम CentOS 7 पर चल रहे MariaDB 10.3 संस्करण का उपयोग करेंगे।

सबसे पहले, एक नया डेटाबेस उपयोगकर्ता बनाएँ:

MariaDB [testing]> CREATE USER [email protected]'%' IDENTIFIED BY 'PASSWORD';

अगर हम इस नए उपयोगकर्ता के लिए अनुदान की जांच करते हैं, तो हमें कुछ ऐसा दिखाई देगा:

MariaDB [testing]> SHOW GRANTS for [email protected]'%';
+----------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
+----------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

अब, आइए इस उपयोगकर्ता के साथ लॉगिन करने और परीक्षण डेटाबेस से जुड़ने का प्रयास करें:

$ mysql -utestuser -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 10.3.16-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use testing
ERROR 1044 (42000): Access denied for user 'testuser'@'%' to database 'testing'

जैसा कि हम देख सकते थे, हम इस उपयोगकर्ता के साथ परीक्षण डेटाबेस से कनेक्ट नहीं हो सकते हैं, इसलिए, अब, हम विशेषाधिकारों के साथ एक "qateam" भूमिका बनाएंगे और हम इस नए उपयोगकर्ता को यह भूमिका सौंपेंगे।

MariaDB [testing]> CREATE ROLE qateam;
Query OK, 0 rows affected (0.001 sec)
MariaDB [testing]> GRANT SELECT,INSERT,UPDATE,DELETE ON testing.* TO qateam;
Query OK, 0 rows affected (0.000 sec)

यदि हम GRANT के बिना इस भूमिका का उपयोग करने का प्रयास करते हैं, तो हमें निम्न त्रुटि दिखाई देगी:

MariaDB [(none)]> SET ROLE qateam;
ERROR 1959 (OP000): Invalid role specification `qateam`

इसलिए, अब हम उपयोगकर्ता को इसका उपयोग करने की अनुमति देने के लिए GRANT चलाएंगे:

MariaDB [(none)]> GRANT qateam TO [email protected]'%';
Query OK, 0 rows affected (0.000 sec)

वर्तमान उपयोगकर्ता के लिए भूमिका निर्धारित करें:

MariaDB [(none)]> SET ROLE qateam;
Query OK, 0 rows affected (0.000 sec)

और डेटाबेस तक पहुँचने का प्रयास करें:

MariaDB [(none)]> use testing;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [testing]>

हम वर्तमान उपयोगकर्ता के लिए अनुदान की जांच कर सकते हैं:

MariaDB [(none)]> SHOW GRANTS for [email protected]'%';
+----------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+----------------------------------------------------------------------------------------------------------+
| GRANT qateam TO 'testuser'@'%'                                                                          |
| GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
+----------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

और वर्तमान भूमिका:

MariaDB [testing]> SELECT CURRENT_ROLE;
+--------------+
| CURRENT_ROLE |
+--------------+
| qateam       |
+--------------+
1 row in set (0.000 sec)

यहां हम qateam भूमिका के लिए अनुदान देख सकते हैं, और यही है, हमारे पास सीधे उपयोगकर्ता को असाइन किया गया विशेषाधिकार नहीं है, हमारे पास भूमिका के लिए विशेषाधिकार हैं, और उपयोगकर्ता वहां से विशेषाधिकार लेता है।

निष्कर्ष

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में एक तिथि से लघु माह का नाम कैसे प्राप्त करें

  2. उच्च उपलब्धता के लिए मारियाडीबी क्लस्टर कैसे तैनात करें

  3. मारियाडीबी में शो कैरेक्टर सेट कैसे काम करता है

  4. मारियाडीबी को छोड़कर ऑपरेटर ने समझाया

  5. उच्च उपलब्धता MySQL और MariaDB समाधानों में उच्च विलंबता के प्रभावों को समझना