Обсуждение: grant command: wildcard on tables?

Поиск
Список
Период
Сортировка

grant command: wildcard on tables?

От
Duane Winner
Дата:
Hello,

We have a database with data loaded and now I need to GRANT
SELECT,UPDATE,INSERT,DELETE to all tables in 4 different schemas for a
specific postgresql user account.

I have two problems:

1) One of these schemas has 75 tables. Is there a way to do the GRANT
command with a wildcard to give the privileges to the user in one fell
swoop?

I try:

    mydatabase=# grant select,update,insert,delete on schemaA.* to myuser;

and I get:
    ERROR:  relation "schemaA.*" does not exist


2) The other three schemas only have several tables each, so I can just
run the GRANT command on each schema.table individually, however one
table has a name with a hyphen it, and this causes an error.

I try:

    mydatabase=# grant select,update,insert,delete on schemaB.table-two
to myuser;

and I get:
    ERROR:  syntax error at or near "-" at character 46


Hopefully there are solutions for both of these problems. And I figure
if I get a solution for problem #1, it will take care of problem #2. Is
there a wildcard syntax solution for #1? Is there a delimiter syntax
solution for #2?

Thanks for any info,
Duane Winner


Re: grant command: wildcard on tables?

От
Stephan Szabo
Дата:
On Thu, 30 Sep 2004, Duane Winner wrote:

> Hello,
>
> We have a database with data loaded and now I need to GRANT
> SELECT,UPDATE,INSERT,DELETE to all tables in 4 different schemas for a
> specific postgresql user account.
>
> I have two problems:
>
> 1) One of these schemas has 75 tables. Is there a way to do the GRANT
> command with a wildcard to give the privileges to the user in one fell
> swoop?
>
> I try:
>
>     mydatabase=# grant select,update,insert,delete on schemaA.* to myuser;
>
> and I get:
>     ERROR:  relation "schemaA.*" does not exist

There isn't a wildcard syntax for that currently, although you can fake it
with a function that gets all the tables in schemaA and grants to each of
them. There should be examples in the mailing list archives since this
gets asked fairly frequently.

> 2) The other three schemas only have several tables each, so I can just
> run the GRANT command on each schema.table individually, however one
> table has a name with a hyphen it, and this causes an error.
>
> I try:
>
>     mydatabase=# grant select,update,insert,delete on schemaB.table-two
> to myuser;

I think that should be: schemaB."table-two"