The point is that the user seems to have permissions to view the schema but
not the table data.  If I can interactively inspect the table schema but
pg_dump is unable to dump the table schema, that seems like a bug.

The account explicitly is not allowed access to the table's data but seems
to be able to access the schema (at least interactively).

Does that make more sense?

- Dan

On Fri, Feb 13, 2015 at 4:48 AM, Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 02/11/2015 01:47 PM, Daniel LaMotte wrote:
>
>> Here’s the situation:
>>
>> |     % psql --version
>>      psql (PostgreSQL) 9.3.5
>>      % postgres --version
>>      postgres (PostgreSQL) 9.3.5
>>      % psql mydatabase
>>      create table mytable_is_readonly (id uuid primary key, text text not
>> null);
>>      create table mytable_is_not_readonly (id uuid primary key, text text
>> not null);
>>      create user readonly with password 'readonly';
>>      grant select on mytable_is_readonly to readonly;
>>
>>      % psql mydatabase readonly
>>      \d mytable_is_readonly
>>                               Table "public.mytable_is_readonly"
>>       Column │  Type   │                            Modifiers
>>      ────────┼─────────┼─────────────────────────────────────────
>> ─────────────────────────
>>       id     │ integer │ not null default nextval('mytable_is_readonly_
>> id_seq'::regclass)
>>       text   │ text    │ not null
>>      Indexes:
>>          "mytable_is_readonly_pkey" PRIMARY KEY, btree (id)
>>
>>      \d mytable_is_not_readonly
>>                               Table "public.mytable_is_not_readonly"
>>       Column │  Type   │                              Modifiers
>>      ────────┼─────────┼─────────────────────────────────────────
>> ─────────────────────────────
>>       id     │ integer │ not null default nextval('mytable_is_not_
>> readonly_id_seq'::regclass)
>>       text   │ text    │ not null
>>      Indexes:
>>          "mytable_is_not_readonly_pkey" PRIMARY KEY, btree (id)
>>
>>      % pg_dump -U readonly mydatabase --schema-only
>> --table=mytable_is_readonly
>>      ... this outputs and works
>>
>>      % pg_dump -U readonly mydatabase --schema-only
>> --table=mytable_is_not_readonly
>>      pg_dump: [archiver (db)] query failed: ERROR:  permission denied for
>> relation mytable_is_not_readonly
>>      pg_dump: [archiver (db)] query was: LOCK TABLE
>> public.mytable_is_not_readonly IN ACCESS SHARE MODE
>> |
>>
>> Is this a bug? Or defined behavior that is expected? My use case is that
>> I have some tables that I don’t want to allow the readonly account to
>> access data in but want to allow it to see the schema of that table.
>>
>
> To me at least SELECT is accessing the data, so I am not sure that the
> above meets your criteria in any case. I would do \dt+
> mytable_is_not_readonly to see who has permissions on the table.
>
>
>
>  My
>
>> guess was that since it could see the schema interactively in psql, that
>> it should be allowed to pg_dump the table with schema only no problem.
>>
>> Thanks for the help!
>>
>> - Dan
>>
>> ​
>>
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to