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

MySQL तालिका और स्तंभ अनुमतियाँ प्रदान करें

टेबल लेवल परमिशन देना

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

  1. Create_user_priv और Grant_priv वाले उपयोगकर्ता के रूप में MySQL से कनेक्ट करें। निम्न क्वेरी चलाकर निर्धारित करें कि किन उपयोगकर्ताओं के पास ये विशेषाधिकार हैं। क्वेरी चलाने के लिए आपके उपयोगकर्ता को पहले से ही MySQL.user पर SELECT विशेषाधिकार की आवश्यकता होगी।

    SELECT User, Host, Super_priv, Create_user_priv, Grant_priv from mysql.user WHERE Create_user_priv = 'Y' AND Grant_Priv = 'Y';
    
  2. अपने प्रतिबंधित उपयोगकर्ता के लिए GRANT स्टेटमेंट जेनरेट करने के लिए निम्न क्वेरी चलाएँ। अपने डेटाबेस के लिए विशिष्ट जानकारी के साथ 'mydatabase,' 'myuser,' और 'myhost' को बदलें।

    ध्यान दें कि myuser और mypassword के आसपास के उद्धरण दो सिंगल कोट्स हैं, डबल नहीं। myhost और ,TABLE_NAME के ​​आस-पास के वर्ण बैकटिक्स हैं (कुंजी आपके कीबोर्ड पर एस्केप कुंजी के नीचे स्थित है)।

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'mydatabase';
    

    उदाहरण के लिए, यदि आप चार्टियो_कनेक्ट क्लाइंट का उपयोग करके उपयोगकर्ता 'chartio_read_only' को अपने 'रिपोर्ट' डेटाबेस से जोड़ना चाहते हैं, तो आप निम्न को चलाएंगे:

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'Reports';
    

    यदि आप चार्टियो के सर्वर से सीधे कनेक्शन का उपयोग करके उपयोगकर्ता 'chartio_direct_connect' को अपने 'एनालिटिक्स' डेटाबेस से कनेक्ट करना चाहते हैं, तो आप निम्न को चलाएंगे:

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Analytics.`', TABLE_NAME, '` to ''chartio_direct_connect''@`52.6.1.1`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'Analytics';
    
  3. क्वेरी का परिणाम निम्न के जैसा होना चाहिए:

    GRANT SELECT, SHOW VIEW ON mydatabase.`Activity` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Marketing` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Operations` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Payments` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Plans` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Services` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Subscriptions` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
    
  4. केवल उन तालिकाओं के लिए कथनों का चयन करें जिन्हें आप एक्सेस देना चाहते हैं और उन प्रश्नों को चलाना चाहते हैं। उदाहरण के लिए, यदि हम केवल उपयोगकर्ता और विज़िटर तालिका तक पहुंच प्रदान करना चाहते हैं तो हम चलाएंगे:

    GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
    
  5. उपयोगकर्ता को एक सुरक्षित पासवर्ड दें।

    SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
    

    या

    SET PASSWORD FOR 'chartio_direct_connect'@`52.6.1.1` = PASSWORD('top$secret');
    

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

स्तंभ स्तरीय अनुमतियां देना

किसी विशिष्ट तालिका पर स्तंभ स्तर की अनुमति देने की प्रक्रिया तालिका स्तर की अनुमति देने के समान है।

  1. निम्नलिखित क्वेरी का उपयोग करके कॉलम स्तर की अनुमति के लिए GRANT स्टेटमेंट जेनरेट करें:

    SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'mytable';
    

    उदाहरण के लिए, यदि आप चार्टियो_कनेक्ट क्लाइंट का उपयोग करके उपयोगकर्ता 'chartio_read_only' को 'रिपोर्ट्स' डेटाबेस की 'उपयोगकर्ता' तालिका में विशिष्ट कॉलम से कनेक्ट करना चाहते हैं, तो आप निम्न को चलाएंगे:

    SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'Reports' AND TABLE_NAME = 'Users';
    
  2. क्वेरी का परिणाम निम्न के जैसा कुछ होना चाहिए:

    GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Campaign_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Created_Date`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`City`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`State`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Zip`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Phone_Number`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Credit_Card`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    
  3. उन कॉलमों के लिए केवल उन कथनों का चयन करें जिन्हें आप एक्सेस देना चाहते हैं और उन प्रश्नों को चलाना चाहते हैं। उदाहरण के लिए, यदि हम केवल 'User_ID' और 'कंपनी' कॉलम तक पहुंच प्रदान करना चाहते हैं तो हम चलाएंगे:

    GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    
  4. उपयोगकर्ता को एक सुरक्षित पासवर्ड दें।

    SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
    

अधिक जानकारी के लिए MySQL दस्तावेज़ देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL कर्सर के साथ कार्य करना

  2. क्या mysql इंडेक्सिंग के प्रदर्शन की जांच करने का कोई तरीका है

  3. उबंटू से MySQL को पूरी तरह से कैसे हटाएं

  4. MySQL SIN () फ़ंक्शन - MySQL में किसी संख्या की साइन लौटाएं

  5. डेटाबेस में तालिकाओं के लिए MySQL तालिका का आकार कैसे प्राप्त करें?