GRANT स्टेटमेंट नए या मौजूदा यूजर को विभिन्न स्तरों पर विशेषाधिकार देता है।
सिंटैक्स
GRANT privilege[, privilege]...
ON privilege_level
TO user [IDENTIFIED BY 'password']
[REQUIRE tls_option]
[WITH [GRANT_OPTION | resource_option]];
घटक व्याख्या
- विशेषाधिकार:
SELECT,INSERT,UPDATE,DELETE,ALL, आदि - स्तर:
*.*(ग्लोबल),db.*(डेटाबेस),db.table(टेबल),db.table(col)(कॉलम) - यूजर:
'user'@'host'— मौजूद नहीं तो बनाता है - IDENTIFIED BY: वैकल्पिक, पासवर्ड सेट/बदलता है
- REQUIRE: SSL/X509 कनेक्शन बाध्यता
- WITH GRANT OPTION: अन्य यूजर्स को विशेषाधिकार देने का अधिकार
- WITH resource_option: प्रति-घंटा कनेक्शन/क्वेरी/अपडेट सीमा
पूर्ण उदाहरण
-- 1. यूजर बनाएं
mysql> USE mysql;
mysql> CREATE USER 'abcd'@'localhost' IDENTIFIED BY 'password123';
Query OK, 0 rows affected (0.04 sec)
-- 2. प्रारंभिक विशेषाधिकार (केवल USAGE)
mysql> SHOW GRANTS FOR 'abcd'@'localhost';
+------------------------------------------+
| Grants for abcd@localhost |
+------------------------------------------+
| GRANT USAGE ON *.* TO 'abcd'@'localhost' |
+------------------------------------------+
-- 3. सभी विशेषाधिकार दें (सभी डेटाबेस, सभी ऑब्जेक्ट्स)
mysql> GRANT ALL ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.05 sec)
-- 4. अद्यतन विशेषाधिकार
mysql> SHOW GRANTS FOR 'abcd'@'localhost';
+---------------------------------------------------------------------+
| Grants for abcd@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
सामान्य विशेषाधिकार
| विशेषाधिकार | अनुमति |
|---|---|
| SELECT | डेटा पढ़ें |
| INSERT | नई पंक्तियाँ जोड़ें |
| UPDATE | मौजूदा डेटा संशोधित करें |
| DELETE | पंक्तियाँ हटाएं |
| CREATE | डेटाबेस/टेबल/इंडेक्स बनाएं |
| DROP | डेटाबेस/टेबल हटाएं |
| ALL | सभी विशेषाधिकार (GRANT OPTION छोड़कर) |
सर्वोत्तम अभ्यास: ALL ON *.* केवल प्रशासनिक यूजर्स को दें। एप्लिकेशन यूजर्स को केवल आवश्यक डेटाबेस/टेबल पर न्यूनतम विशेषाधिकार दें।