MySQL में किसी विशिष्ट उपयोगकर्ता खाते को दिए गए सभी अधिकारों (प्रिविलेज) को देखने के लिए SHOW GRANTS स्टेटमेंट का उपयोग करें। यह सुरक्षा ऑडिट, समस्या निवारण, और अधिकार प्रबंधन के लिए आवश्यक है।
सिंटैक्स
SHOW GRANTS FOR 'username'@'hostname';
व्यावहारिक उदाहरण
चरण 1: सभी उपयोगकर्ता खाते सूचीबद्ध करें
mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+ | User | Host | +------------------+-----------+ | Bob | % | | Charlie | % | | Robert | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | @UserName@ | localhost | | Adam | localhost | | Adam Smith | localhost | | Chris | localhost | | David | localhost | | James | localhost | | John | localhost | | John Doe | localhost | | Michael | localhost | | Mike | localhost | | User1 | localhost | | am | localhost | | hbstudent | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | +------------------+-----------+
चरण 2: विशिष्ट उपयोगकर्ता के ग्रांट देखें
mysql> SHOW GRANTS FOR 'John'@'localhost';
परिणाम
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for John@localhost | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `John`@`localhost` | | GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON *.* TO `John`@`localhost` | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
आउटपुट समझना
- पहली पंक्ति: मानक SQL प्रिविलेज (
SELECT,INSERT,UPDATE,DROP, आदि) -*.*पर (सभी डेटाबेस, सभी टेबल) - दूसरी पंक्ति: डायनामिक प्रिविलेज/एडमिन भूमिकाएं (MySQL 8.0+) -
BACKUP_ADMIN,BINLOG_ADMIN, आदि ON *.*का अर्थ है वैश्विक अधिकार (सभी डेटाबेस/टेबल)
सामान्य ग्रांट पैटर्न
वर्तमान उपयोगकर्ता के ग्रांट
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER();
सभी उपयोगकर्ताओं के ग्रांट (स्क्रिप्टिंग के लिए)
SELECT CONCAT("SHOW GRANTS FOR '", User, "'@'", Host, "';")
FROM mysql.user;
केवल विशिष्ट डेटाबेस के ग्रांट
SHOW GRANTS FOR 'user'@'host' ON database_name.*;
महत्वपूर्ण प्रिविलेज श्रेणियां
| श्रेणी | उदाहरण |
|---|---|
| डेटा | SELECT, INSERT, UPDATE, DELETE |
| स्कीमा | CREATE, DROP, ALTER, INDEX |
| प्रशासन | RELOAD, SHUTDOWN, PROCESS, SUPER |
| रीप्लिकेशन | REPLICATION SLAVE, REPLICATION CLIENT |
| सुरक्षा | CREATE USER, GRANT OPTION |
| एडमिन (8.0+) | BACKUP_ADMIN, SYSTEM_VARIABLES_ADMIN, आदि |