因此,我使用Informix DB引擎来创建数据库。我已经注意到一些奇怪的东西,但是我在IBM官方页面上找不到有关的信息。
如果您检查表的定义,则最后一行会显示:
revoke all on "gabriel.barrios".proveedores from "public" as "gabriel.barrios";
我没有写这个,我只是定义了表属性。但这似乎是引擎本身在增加的。
是这样吗?
如果是的话,我该如何处理这种默认行为。
另外,有人可以澄清该行的输出:
{ TABLE "gabriel.barrios".proveedores row size = 110 number of columns = 4 index size = 9 }
[gabriel.barrios@informix1 ~]$ dbschema -d practico_matias_barrios -t Proveedores
DBSCHEMA Schema Utility INFORMIX-SQL Version 11.70.UC8W1
{ TABLE "gabriel.barrios".proveedores row size = 110 number of columns = 4 index size = 9 }
create table "gabriel.barrios".proveedores
(
id serial not null ,
nombre varchar(50) not null constraint "gabriel.barrios".proveedor_nombre_vacio,
situacion integer not null constraint "gabriel.barrios".proveedor_situacion_vacio,
ciudad varchar(50) not null constraint "gabriel.barrios".proveedor_ciudad_vacio,
primary key (id) constraint "gabriel.barrios".proveedor_clave_primaria
);
revoke all on "gabriel.barrios".proveedores from "public" as "gabriel.barrios";
答案 0 :(得分:2)
Informix的默认行为是向PUBLIC
角色授予特权。
根据文档(Table-level privileges):
在符合ANSI的数据库中,只有表所有者具有任何 特权。在其他数据库中,数据库服务器作为 创建一个表,自动授予 PUBLIC 所有表特权 除了Alter和References之外,除非 NODEFDAC 环境变量 已设置为“是”以从 PUBLIC 保留所有表特权。 当您允许数据库服务器自动授予所有表时 PUBLIC 的权限,任何用户都可以访问新创建的表 具有“连接”权限。如果这不是您想要的(如果用户 具有“连接”权限的用户,该用户应无法访问此权限 表),则必须在 PUBLIC 之后撤消对表的所有特权 您创建表格。
您看到的是dbschema
总是在创建表输出上从PUBLIC
撤消特权,然后将它们重新添加到特权输出上。
$ dbschema -d mydatabase -t default_privileges
DBSCHEMA Schema Utility INFORMIX-SQL Version 12.10.FC12
{ TABLE "myuser".default_privileges row size = 4 number of columns = 1 index size = 0 }
create table "myuser".default_privileges
(
id integer
);
revoke all on "myuser".default_privileges from "public" as "myuser";
使用dbschema
特权输出并按表default_privileges
进行过滤:
$ dbschema -d mydatabase -p all | grep default_privileges
grant select on "myuser".default_privileges to "public" as "myuser";
grant update on "myuser".default_privileges to "public" as "myuser";
grant insert on "myuser".default_privileges to "public" as "myuser";
grant delete on "myuser".default_privileges to "public" as "myuser";
grant index on "myuser".default_privileges to "public" as "myuser";