简体   繁体   English

如何编写存储过程以检查MySql中的Grant?

[英]How to write stored procedure to check Grant in MySql?

I want to create a stored procedure to check grant. 我想创建一个存储过程来检查授予。 I have tried by following way but I don't what I am missing here. 我已经尝试按照以下方式进行操作,但是我并不是这里所缺少的。

//simple Query "SHOW GRANTS FOR testuser @'192.168.1.180'"  - It is working

CREATE DEFINER=`abc`@`localhost` PROCEDURE `SP_GetGrantAllPriviledge`(
IN Username TEXT,
IN Hostname TEXT
)
BEGIN
   SHOW GRANTS FOR Username @Hostname; //doesn't work
END

Can anybody suggest what I am missing? 有人可以建议我缺少什么吗?

You can use the TABLE_PRIVILEGES in the INFORMATION_SCHEMA. 您可以在INFORMATION_SCHEMA中使用TABLE_PRIVILEGES。

SELECT *
FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
WHERE `GRANTEE` = CONCAT('''', Username, '''@''', Hostname, '''')
@Hostname; is the source of issue

Update your SP with prepare statement: 使用prepare语句更新SP:

CREATE PROCEDURE `SP_GetGrantAllPriviledge`(
IN Username TEXT,
IN Hostname TEXT
)
BEGIN

   SET @sql = CONCAT('SHOW GRANTS FOR ',Username,' @',Hostname,'; ');
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
END

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM