टेबल लेवल परमिशन देना
आप निम्न कार्य करके MySQL में तालिका स्तरीय अनुमतियों वाला एक उपयोगकर्ता बना सकते हैं:
-
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';
-
अपने प्रतिबंधित उपयोगकर्ता के लिए 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';
-
क्वेरी का परिणाम निम्न के जैसा होना चाहिए:
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`;
-
केवल उन तालिकाओं के लिए कथनों का चयन करें जिन्हें आप एक्सेस देना चाहते हैं और उन प्रश्नों को चलाना चाहते हैं। उदाहरण के लिए, यदि हम केवल उपयोगकर्ता और विज़िटर तालिका तक पहुंच प्रदान करना चाहते हैं तो हम चलाएंगे:
GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`; GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
-
उपयोगकर्ता को एक सुरक्षित पासवर्ड दें।
SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
या
SET PASSWORD FOR 'chartio_direct_connect'@`52.6.1.1` = PASSWORD('top$secret');
अब आप इस उपयोगकर्ता के साथ अपने डेटाबेस को सुरक्षित रूप से एक्सेस कर सकते हैं और आश्वस्त रहें कि उसके पास केवल निर्दिष्ट तालिकाओं की अनुमति है।
स्तंभ स्तरीय अनुमतियां देना
किसी विशिष्ट तालिका पर स्तंभ स्तर की अनुमति देने की प्रक्रिया तालिका स्तर की अनुमति देने के समान है।
-
निम्नलिखित क्वेरी का उपयोग करके कॉलम स्तर की अनुमति के लिए 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';
-
क्वेरी का परिणाम निम्न के जैसा कुछ होना चाहिए:
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`;
-
उन कॉलमों के लिए केवल उन कथनों का चयन करें जिन्हें आप एक्सेस देना चाहते हैं और उन प्रश्नों को चलाना चाहते हैं। उदाहरण के लिए, यदि हम केवल '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`;
-
उपयोगकर्ता को एक सुरक्षित पासवर्ड दें।
SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
अधिक जानकारी के लिए MySQL दस्तावेज़ देखें।