我该授予我的InnoDB MySQL用户哪些特权?

4

我有一个MySQL用户(使用InnoDB引擎),想知道授予它哪些权限是安全的?目前,我已经授予它访问特定数据库的权限和以下权限:

SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, CREATE TEMPORARY TABLES

但由于它是InnoDB,我想知道是否需要显式授予此用户LOCK TABLES权限?而且我不确定是否需要授予CREATE TEMPORARY TABLES权限。

你能帮我弄清楚应该授予哪些权限吗?Hibernate将访问此用户,因此我也想知道为使其正常工作需要什么权限?

1个回答

4

为了使用系统,您应该授予用户所需的最低权限。

在测试时,可以使用grant all on the database

到生产环境时要锁定权限
但是在生产环境中,您只应授予表的select权限。
仅对用户实际需要添加或更改数据的表授予insertupdate权限。
create是用户几乎从不需要的权限。 (除非您希望他们为您设计数据库 :-).
同样适用于indexalter,您不希望用户拥有这种权限。
如果您的应用程序创建临时表,则create temp tables可能是可以接受的。


5
如果你关心性能,那么授予表级权限并不是一个好主意。MySQL将不得不为每个查询检查权限,而数据库级别的权限通常只需要在会话开始时检查一次。 - sanmai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接