MySQL में FLUSH PRIVILEGES का उपयोग करके अधिकार परिवर्तन लागू करना
नया उपयोगकर्ता बनाने और अधिकार देने के बाद, FLUSH PRIVILEGES चलाना आवश्यक है ताकि परिवर्तन तुरंत प्रभावी हों।
चरण
- उपयोगकर्ता बनाएं:
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; - अधिकार दें:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' WITH GRANT OPTION; - अधिकार फ्लश करें:
FLUSH PRIVILEGES;
उदाहरण
mysql> CREATE USER 'Bob'@'%' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.56 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO 'Bob'@'%' WITH GRANT OPTION; Query OK, 0 rows affected (0.23 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.14 sec)
क्यों FLUSH PRIVILEGES आवश्यक है?
- MySQL अधिकार टेबल (mysql.user, mysql.db, आदि) को मेमोरी में कैश करता है
GRANTस्टेटमेंट कैश को स्वचालित रूप से अपडेट करता है, लेकिन कभी-कभी नहींFLUSH PRIVILEGESकैश को डिस्क से पुनः लोड करता है- सीधे
INSERT/UPDATE/DELETEसे mysql टेबल बदलने पर अनिवार्य है
नोट
MySQL 8.0+ में GRANT के बाद FLUSH PRIVILEGES स्वचालित होता है, लेकिन मैन्युअल चलाने में कोई हानि नहीं है।
सामान्य GRANT विकल्प
| कथन | अर्थ |
|---|---|
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' | सभी डेटाबेस/टेबल पर सभी अधिकार |
| GRANT SELECT, INSERT ON db.* TO 'user'@'%' | विशिष्ट अधिकार विशिष्ट डेटाबेस पर |
| WITH GRANT OPTION | उपयोगकर्ता दूसरों को अधिकार दे सकता है |