Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में उपयोगकर्ता बनाएं और अनुमतियाँ दें (GRANT स्टेटमेंट)

MySQL में उपयोगकर्ता बनाना और अनुमतियाँ देना

MySQL में CREATE USER और GRANT स्टेटमेंट्स का उपयोग करके नए उपयोगकर्ता बनाए जाते हैं और विशिष्ट डेटाबेस/टेबल्स पर अनुमतियाँ दी जाती हैं।

सिंटैक्स अवलोकन

-- डेटाबेस बनाएं
CREATE DATABASE yourDatabaseName DEFAULT CHARACTER SET utf8mb4;

-- उपयोगकर्ता बनाएं
CREATE USER 'yourUserName'@'host' IDENTIFIED BY 'yourPassword';

-- अनुमतियाँ दें
GRANT privilege_type ON database.table TO 'yourUserName'@'host';

-- अनुमतियाँ लागू करें
FLUSH PRIVILEGES;

व्यावहारिक उदाहरण

1. डेटाबेस बनाएं

mysql> CREATE DATABASE demo_app DEFAULT CHARACTER SET utf8mb4;
Query OK, 1 row affected, 1 warning (0.00 sec)

नोट: utf8mb4 का उपयोग करें (पूर्ण यूनिकोड समर्थन के लिए), utf8 के बजाय।

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

mysql> CREATE USER 'John_123'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
  • 'John_123': उपयोगकर्ता नाम
  • '%': होस्ट (किसी भी होस्ट से कनेक्शन की अनुमति). विशिष्ट होस्ट के लिए 'localhost', '192.168.1.%', आदि उपयोग करें
  • IDENTIFIED BY: प्रमाणीकरण प्लगइन और पासवर्ड निर्दिष्ट करता है

3. अनुमतियाँ दें

mysql> GRANT SELECT ON demo_app.* TO 'John_123'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT INSERT ON demo_app.* TO 'John_123'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT UPDATE ON demo_app.* TO 'John_123'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT DELETE ON demo_app.* TO 'John_123'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT EXECUTE ON demo_app.* TO 'John_123'@'%';
Query OK, 0 rows affected (0.00 sec)

4. संक्षिप्त रूप (एक GRANT में कई अनुमतियाँ)

GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE 
ON demo_app.* TO 'John_123'@'%';

5. सभी अनुमतियाँ (सावधानी से उपयोग करें)

GRANT ALL PRIVILEGES ON demo_app.* TO 'John_123'@'%';

उपयोगकर्ता की अनुमतियाँ देखना

mysql> SHOW GRANTS FOR 'John_123'@'%';
+-----------------------------------------------------------------------------+
| Grants for John_123@%                                                       |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `John_123`@`%`                                        |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `demo_app`.* TO `John_123`@`%` |
+-----------------------------------------------------------------------------+
2 rows in set (0.00 sec)

आम अनुमति प्रकार

अनुमतिविवरण
SELECTपढ़ने की अनुमति
INSERTनई पंक्तियाँ जोड़ने की अनुमति
UPDATEमौजूदा पंक्तियाँ संशोधित करने की अनुमति
DELETEपंक्तियाँ हटाने की अनुमति
EXECUTEस्टोर्ड प्रोसीजर/फ़ंक्शन चलाने की अनुमति
CREATEटेबल/इंडेक्स बनाने की अनुमति
DROPटेबल/व्यू हटाने की अनुमति
ALTERटेबल संरचना बदलने की अनुमति
INDEXइंडेक्स बनाने/हटाने की अनुमति
REFERENCESविदेशी कुंजी बनाने की अनुमति

स्तर-वार अनुमतियाँ

  • ग्लोबल: GRANT SELECT ON *.* TO 'user'@'host'
  • डेटाबेस: GRANT SELECT ON db_name.* TO 'user'@'host'
  • टेबल: GRANT SELECT ON db_name.table_name TO 'user'@'host'
  • कॉलम: GRANT SELECT (col1, col2) ON db_name.table_name TO 'user'@'host'

अनुमतियाँ वापस लेना

REVOKE INSERT ON demo_app.* FROM 'John_123'@'%';
REVOKE ALL PRIVILEGES ON demo_app.* FROM 'John_123'@'%';

उपयोगकर्ता हटाना

DROP USER 'John_123'@'%';

सर्वोत्तम अभ्यास

  1. न्यूनतम विशेषाधिकार सिद्धांत: केवल आवश्यक अनुमतियाँ दें
  2. मजबूत पासवर्ड उपयोग करें
  3. होस्ट प्रतिबंधित करें: '%' के बजाय विशिष्ट IP/होस्ट उपयोग करें
  4. नियमित ऑडिट: SHOW GRANTS के साथ अनुमतियों की समीक्षा करें
  5. डिफ़ॉल्ट प्रमाणीकरण प्लगइन: MySQL 8.0+ में caching_sha2_password डिफ़ॉल्ट है

MySQL 8.0+ में परिवर्तन

  • GRANT अब नए उपयोगकर्ता नहीं बनाता (पहले CREATE USER IF NOT EXISTS करता था)
  • IDENTIFIED BY GRANT में पदावनत
  • रोल समर्थन जोड़ा गया: CREATE ROLE, GRANT role TO user
  1. - MySQL में OR और AND शर्तों को एक साथ उपयोग करना

    MySQL क्वेरी में जटिल फ़िल्टरिंग के लिए OR और AND ऑपरेटरों को संयोजित किया जा सकता है। कोष्ठक (parentheses) का उपयोग करके ऑपरेटर प्राथमिकता को नियंत्रित करना महत्वपूर्ण है। उदाहरण के लिए टेबल बनाना mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(2

  1. - MySQL में स्टोर्ड प्रोसीजर और प्रिपेयर्ड स्टेटमेंट का उपयोग करके डायनामिक टेबल बनाना

    MySQL में स्टोर्ड प्रोसीजर, PREPARE, EXECUTE, और डायनामिक SQL का उपयोग करके रनटाइम पर टेबल नाम निर्दिष्ट करके टेबल बनाएं। स्टोर्ड प्रोसीजर बनाना mysql> DELIMITER $$ mysql> CREATE PROCEDURE creatingDynamicTableDemo(yourTableName VARCHAR(200)) -> BEGIN -> SET @name = yourTabl

  1. - MySQL में AND/OR का उपयोग करके चयन क्वेरी निष्पादित करें

    AND और OR तार्किक ऑपरेटर को मिलाकर एक ही क्वेरी में कई फ़िल्टर शर्तें लागू करें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable ( StudentId INT, StudentName VARCHAR(20), StudentSubject VARCHAR(20) ); Query OK, 0 rows affected (0.62 sec) INSERT INTO DemoTable VALUES (10,Chris,MongoDB