我正在设置一个 postgres 服务器,它将是一个(主要是)只读工作负载。
我想允许我自己和同事按照我们认为合适的方式创建/删除索引,而不允许我们删除表或改变表。
我花了一些时间阅读授权/撤销文档以及角色文档页面,但似乎表所有者角色获得了这两种权力。
我发现的一件事是,据说,在表空间上授予创建允许创建索引,但它不起作用(注意,我没有创建任何其他表空间)。
具体来说,我试过:
mydb=# grant create on tablespace pg_default to bob;
GRANT
Run Code Online (Sandbox Code Playgroud)
...然后切换到鲍勃:
mydb=> create index on foo(a);
ERROR: must be owner of relation foo
Run Code Online (Sandbox Code Playgroud)
我也尝试让 bob 成为所有者,但是 bob 获得了删除表的权利,而且似乎无法撤销该特权。所以我要么两者兼而有之,要么什么都不做。
有任何想法吗?
我正在使用 Postgres 9.1 我要加入两个表:
wikidb=> \d page
Table "public.page"
Column | Type | Modifiers
-----------------------+---------------+------------------------------
page_id | bigint | not null
page_namespace | integer | not null default 0
page_title | text | not null default ''::text
[...]
Indexes:
[...]
"page_page_namespace_page_title_idx" UNIQUE, btree (page_namespace, page_title)
wikidb=> \d pagelinks
Table "public.pagelinks"
Column | Type | Modifiers
-------------------+---------+----------------------------
pl_from | bigint | not null default 0::bigint
pl_namespace | integer | not null default 0
pl_title | text | not null default ''::text …Run Code Online (Sandbox Code Playgroud) postgresql performance optimization execution-plan postgresql-9.1 query-performance