Re: pg_dumpall does not save CREATE permission on databases - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: pg_dumpall does not save CREATE permission on databases
Date
Msg-id 200311082034.hA8KYcs11059@candle.pha.pa.us
Whole thread Raw
In response to pg_dumpall does not save CREATE permission on databases  (Paul Tillotson <ptchristendom@yahoo.com>)
List pgsql-bugs
This is fixed in 7.4.X and in fact 7.4 pg_dumpall will work on a 7.3.X
database.


---------------------------------------------------------------------------

Paul Tillotson wrote:
> ============================================================================
>                         POSTGRESQL BUG REPORT TEMPLATE
> ============================================================================
>
>
> Your name               : Paul Tillotson
> Your email address      : ptchristendom at yahoo dot com
>
>
> System Configuration
> ---------------------
>   Architecture (example: Intel Pentium)         : AMD athlon something
>
>   Operating System (example: Linux 2.0.26 ELF)  : FreeBSD
>
>   PostgreSQL version (example: PostgreSQL-7.3.4): PostgreSQL-7.3.4
>
>   Compiler used (example:  gcc 2.95.2)          : gcc
>
> template1=# select version();
>                                version
> ---------------------------------------------------------------------
>  PostgreSQL 7.3.4 on i386-portbld-freebsd4.8, compiled by GCC 2.95.4
>
> Please enter a FULL description of your problem:
> ------------------------------------------------
>
> pg_dumpall does not save all access control permissions on a database.
> (This is true for at least the CREATE permission.)
> This causes the restore script to fail when, for example, it tries to create a
> schema which is owned by a different user than the database which it resides
> in.
>
>
> Please describe a way to repeat the problem.   Please try to provide a
> concise reproducible example, if at all possible:
> ----------------------------------------------------------------------
> DO THIS IN PSQL:
>
> template1=# create database foobar;
> template1=# create user mrfoobar;
> template1=# grant create on database foobar to mrfoobar;
> template1=# select datname, datacl from pg_database;
>   datname  |          datacl
> -----------+--------------------------
>  foobar    | {=T,pgsql=CT,mrfoobar=C}
>  template1 | {=,pgsql=CT}
>  template0 | {=,pgsql=CT}
> (3 rows)
>
> THEN DO THIS FROM YOUR SHELL. NOTICE THAT THERE IS NO LINE
> OF THE FORM "GRANT CREATE ON ...."
>
> james% pg_dumpall
> --
> -- PostgreSQL database cluster dump
> --
>
> \connect "template1"
>
> --
> -- Users
> --
>
> DELETE FROM pg_shadow WHERE usesysid <> (SELECT datdba FROM pg_database WHERE
> datname = 'template0');
>
> CREATE USER mrfoobar WITH SYSID 100 NOCREATEDB NOCREATEUSER;
>
>
> --
> -- Groups
> --
>
> DELETE FROM pg_group;
>
>
>
> --
> -- Database creation
> --
>
> CREATE DATABASE foobar WITH OWNER = pgsql TEMPLATE = template0 ENCODING =
> 'SQL_ASCII';
>
>
> \connect foobar
> --
> -- PostgreSQL database dump
> --
>
> \connect template1
> --
> -- PostgreSQL database dump
> --
>
> --
> -- TOC entry 2 (OID 1)
> -- Name: DATABASE template1; Type: COMMENT; Schema: -; Owner:
> --
>
> COMMENT ON DATABASE template1 IS 'Default template database';
>
> If you know how this problem might be fixed, list the solution below:
> ---------------------------------------------------------------------
>
> pg_dumpall should read the from the datacl column from the pg_database table
> and
> write lines like this into the dump script when appropriate:
> GRANT <priv> ON DATABASE <database> TO <username>;
>
>
> __________________________________
> Do you Yahoo!?
> Protect your identity with Yahoo! Mail AddressGuard
> http://antispam.yahoo.com/whatsnewfree
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-bugs by date:

Previous
From: Paul Tillotson
Date:
Subject: pg_dumpall does not save CREATE permission on databases
Next
From: Tom Lane
Date:
Subject: Re: suggest: change alter user set search_path to raise notice not error