INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
MySQL में सभी यूजर्स के स्कीमा-स्तरीय प्रिविलेजेस देखने के लिए INFORMATION_SCHEMA.SCHEMA_PRIVILEGES टेबल को क्वेरी करें।
क्वेरी
mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES;
नमूना आउटपुट (संक्षिप्त)
+-----------------------------+---------------+--------------------+-------------------------+--------------+
| GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | PRIVILEGE_TYPE | IS_GRANTABLE |
+-----------------------------+---------------+--------------------+-------------------------+--------------+
| 'mysql.sys'@'localhost' | def | sys | TRIGGER | NO |
| 'Adam Smith'@'localhost' | def | test | SELECT | NO |
| 'Adam Smith'@'localhost' | def | test | INSERT | NO |
| 'Adam Smith'@'localhost' | def | test | UPDATE | NO |
| 'Adam Smith'@'localhost' | def | test | DELETE | NO |
| 'Adam Smith'@'localhost' | def | test | CREATE | NO |
| 'Adam Smith'@'localhost' | def | test | DROP | NO |
| ... | ... | ... | ... | ... |
| 'Robert'@'%' | def | sample | SELECT | YES |
| 'Robert'@'%' | def | sample | INSERT | YES |
| ... | ... | ... | ... | ... |
+-----------------------------+---------------+--------------------+-------------------------+--------------+
46 rows in set (0.00 sec)
कॉलम व्याख्या
| कॉलम | विवरण |
GRANTEE | यूजर अकाउंट ('user'@'host' फॉर्मेट में) |
TABLE_CATALOG | कैटलॉग नाम (हमेशा 'def' MySQL में) |
TABLE_SCHEMA | डेटाबेस/स्कीमा नाम |
PRIVILEGE_TYPE | प्रिविलेज प्रकार (SELECT, INSERT, CREATE, आदि) |
IS_GRANTABLE | YES यदि यूजर यह प्रिविलेज दूसरों को दे सकता है |
उपयोगी फ़िल्टरिंग क्वेरीज
विशिष्ट यूजर के प्रिविलेजेस
SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE GRANTEE LIKE '%Adam Smith%';
विशिष्ट डेटाबेस के प्रिविलेजेस
SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE TABLE_SCHEMA = 'test';
विशिष्ट प्रिविलेज वाले यूजर्स
SELECT DISTINCT GRANTEE FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE PRIVILEGE_TYPE = 'CREATE' AND TABLE_SCHEMA = 'test';
ग्रांटेबल प्रिविलेजेस (WITH GRANT OPTION)
SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE IS_GRANTABLE = 'YES';
अन्य प्रिविलेज टेबल्स
| टेबल | स्कोप | उद्देश्य |
SCHEMA_PRIVILEGES | डेटाबेस/स्कीमा | CREATE, DROP, ALTER आदि |
TABLE_PRIVILEGES | टेबल | SELECT, INSERT, UPDATE, DELETE, INDEX आदि |
COLUMN_PRIVILEGES | कॉलम | कॉलम-स्तरीय SELECT/INSERT/UPDATE |
USER_PRIVILEGES | ग्लोबल | SUPER, RELOAD, SHUTDOWN, CREATE USER आदि |
SHOW GRANTS vs INFORMATION_SCHEMA
| पहलू | SHOW GRANTS | INFORMATION_SCHEMA |
| आउटपुट फॉर्मेट | GRANT स्टेटमेंट्स (पठनीय) | टेबुलर (प्रोग्रामेटिक) |
| स्कोप | विशिष्ट यूजर | सभी यूजर्स (फ़िल्टर करने योग्य) |
| रोल्स (8.0+) | दिखाता है | अलग टेबल: ROLE_TABLE_GRANTS आदि |
सभी प्रिविलेजेस का पूर्ण दृश्य (MySQL 8.0+)
SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES
UNION ALL
SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
UNION ALL
SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
UNION ALL
SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES;