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

Is there any user level privilege in Informix?

据我所知,Informix 中的用户或角色有一定的访问权限 privileges。如果我授予任何数据库级权限,它将有权访问该数据库下的所有用户/模式。

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

如果您授予用户对数据库的 CONNECT 权限,则他们可以访问该数据库中的 tables(通常但不一定是所有 tables 在数据库中)。您还可以撤销对 table 的 PUBLIC 权限,然后仅将访问权限授予命名用户或角色,然后只有那些被授予访问权限的用户才能访问它。这里,"access"表示"if they try to SELECT, they need to have been granted SELECT access; if they try to INSERT, they need to have been granted INSERT access; etc.".

默认情况下,当您在普通数据库中创建 table 时,所有用户都将获得 select、插入、更新、删除 table 的权限。这是通过 GRANT ALL ON the_table TO PUBLIC 的等价物完成的。请注意,每个用户都拥有授予 PUBLIC 的权限,并且可能还有一些额外的权限。因此,要确保只有 selected 用户或角色可以访问,有必要使用 REVOKE ALL ON the_table FROM PUBLIC。有一个环境变量 NODEFDAC=1 和一个同名的 $ONCONFIG 文件设置抑制授予 PUBLIC 的默认 'discretionary access controls' (DAC)。请注意,在 MODE ANSI 数据库中,默认情况下不会向其他任何人授予任何权限。

在数据库中授予 RESOURCE 权限的用户的约束与授予 CONNECT 权限的用户类似 — 区别在于 RESOURCE 用户可以创建自己的 table,而 CONNECT 用户不能。

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