I haven't tried the 7.4 beta, so it may be fixed there - but in 7.3.4, pg_dumpall doesn't output global database ACL's. Try this in a fresh database after an initdb:
template1=# create user test nocreatedb nocreateuser; CREATE USER template1=# create database testdb; CREATE DATABASE template1=# grant create on database testdb to test; GRANT template1=# select datname, datacl from pg_database ; datname | datacl -----------+------------------------- testdb | {=T,postgres=CT,test=C} template1 | {=,postgres=CT} template0 | {=,postgres=CT} (3 rows) template1=# \q $ pg_dumpall -U postgres -- -- PostgreSQL database cluster dump -- \connect "template1" -- -- Users -- DELETE FROM pg_shadow WHERE usesysid <> (SELECT datdba FROM pg_database WHERE datname = 'template0'); CREATE USER test WITH SYSID 100 NOCREATEDB NOCREATEUSER; -- -- Groups -- DELETE FROM pg_group; -- -- Database creation -- CREATE DATABASE testdb WITH OWNER = postgres TEMPLATE = template0 ENCODING = 'SQL_ASCII'; \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'; \connect testdb -- -- PostgreSQL database dump -- ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org