postgresでデータベースの所有者を変更したいときにALTER DATABASE hoge OWNER TO new_user
で行けるかと思ったのですが、database以下のtableもひとつずつ所有者を変更する必要があるみたいです。
テーブルが大量にある場合、ひとつずつALTER TABLE huga OWNER TO new_user
をするのは大変!ということで、ぐぐったら下記のような解決策がでてきました。
下記を実行するとSQL文が発行されます。
SELECT
'ALTER TABLE ' || schemaname
|| '.' || tablename ||
' OWNER TO new_user;'
FROM pg_tables
WHERE tableowner ='old_user'
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
ALTER TABLE public.xxxxxxx OWNER TO xxxxxx;
…
あとはこれをコピーして実行すればok。
テーブルに紐づくスキーマの権限も同時に変更されました。
(参照:http://docolog.cocolog-nifty.com/papalog/2011/06/postgresql-8caf.html)