Tag: 存储过程

仅向用户提供GRANT EXECUTE'过程'(无select或插入权限)

我想知道是否有可能授予EXECUTE权限的用户没有授予的过程上运行的表上的SELECT , INSERT等权限? 将它用于webapp的login表。 MySQL正在Docker容器中运行。 用于创build过程的SQL作为docker构build过程的一部分进行复制(运行时,sql在entrypoint.sh中使用)。 运行容器(-e标志)时创buildLogin_db。 我想从下面删除GRANT SELECT行,所以无论发生什么事情,webapp服务器都不能运行SELECT查询 – 比如执行SELECT * FROM logins 。 CREATE USER 'logins'@'172.24.0.7' IDENTIFIED BY 'some-password'; GRANT SELECT, INSERT, UPDATE on logins_db.login TO 'logins'@'172.24.0.7'; GRANT EXECUTE ON PROCEDURE logins_db.sp_login16 TO 'logins'@'172.24.0.7'; FLUSH PRIVILEGES; 这不能解决它 – 因为表所有者会暴露相同的权限: 由于表权限,执行存储的proc失败并执行GRANT EXECUTE 这可能可以解释为什么我不能,但表名有点奇怪(MySQL新手 – 我的印象是mysql.proc是一个系统表,所以不知道它是否适用): 如何将特定存储过程的执行权授予用户 难道是根在创build过程时没有SELECT权限,所以login用户无法运行它? (因为Docker MySQL运行的是entrypoint.sh,然后是环境variables)? 程序代码在这里(我知道,不是最优雅的) – 我可以授予,然后REVOKE权限的logins用户在此,考虑到DEFINER是根? CREATE DEFINER=`root`@`localhost` […]