授予数据库中的一个只读用户对存储过程和udfs的访问权,但不包括可以插入的udfsprocedures。

问题描述 投票:0回答:1

我有一个场景,我需要一个数据库的只读用户。这个用户可以读取表,就像查看任何东西一样。然而,在执行下面的命令。

GRANT EXECUTE
  ON `randomdatabase`.*
  TO [email protected];

我能够读取任何表或视图。但是当涉及到UDF和存储过程时,我无法执行它们。但如果我授予 execute 权限的用户,我可以执行UDF和过程,甚至是那些有插入到表中的代码。因此,这与作为一个只读用户是矛盾的。有什么方法可以防止执行特定的UDF和可以插入到表的过程?

mysql privileges grant
1个回答
0
投票

当你授予 EXECUTE 权限,用户获得的是执行权限。这些权限并不检查例程的内容行为是什么。这使得你可以允许用户修改数据库的内容,但只能通过在例程中定义的一组规则。

如果你只需要授予只读权限,那么你需要排除那些添加删除更新数据库的例程。

这种行为并不是MySQL所特有的,但所有其他数据库的工作方式都是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.