Informix中是否有任何用户级别的特权?

时间:2019-05-29 18:42:02

标签: informix privileges

如我所读,在Informix中有对用户或角色的某些访问权限privileges。如果我授予数据库级别的任何特权,它将有权访问该数据库下的所有用户/模式。

我的疑问是我可以将此特权限制为该数据库中的特定用户/模式吗?我们在Informix中具有任何用户/模式级别的特权吗?

1 个答案:

答案 0 :(得分:0)

如果您授予用户对数据库的CONNECT特权,则他们可以访问该数据库中已被授予其访问权限的表(通常但不一定是数据库中的所有表)。您还可以撤消对表的PUBLIC特权,然后仅将访问权限授予命名的用户或角色,然后只有那些被授予访问权限的用户才能访问它。在这里,“访问”是指“如果他们尝试进行SELECT,则需要授予他们SELECT的访问权限;如果他们尝试进行INSERT,则需要授予其INSERT的访问权限;以此类推。”

默认情况下,当您在普通数据库中创建表时,将为所有用户提供对该表的选择,插入,更新,删除权限。这是通过等效于GRANT ALL ON the_table TO PUBLIC来完成的。请注意,每个用户都具有授予PUBLIC的权限以及可能的一些额外特权。因此,为了确保只有选定的用户或角色具有访问权限,必须使用REVOKE ALL ON the_table FROM PUBLIC。有一个具有相同名称的环境变量NODEFDAC=1和一个$ONCONFIG文件设置,它会禁止授予PUBLIC的默认“自由访问控制”(DAC)。请注意,在MODE ANSI数据库中,默认情况下,不授予任何其他人权限。

对授予数据库中RESOURCE特权的用户的限制类似于授予CONNECT特权的类似用户-区别在于RESOURCE用户可以创建自己的表,而CONNECT用户不能。

如果授予用户DBA特权,则他们可以访问数据库中的任何表。因此,在授予DBA特权时要谨慎。