データベースの権限。
スキーマを勝手に作られないようにデータベース管理者だけに権限を与えると。
まずは、デフォルト権限からPUBLICの権限をはずす。
template1=# REVOKE ALL PRIVILEGES ON DATABASE test FROM PUBLIC RESTRICT; REVOKE
権限をはずすと、今回は以下のような権限になっている。
{testadmin=C*T*/testadmin}
testadminはオーナなのでこれはこれでよし。
管理者グループにCTの権限をあたる。GRANT OPTIONは必要なし。
template1=# GRANT ALL PRIVILEGES ON DATABASE test TO GROUP testadmins; GRANT
そうすると、以下のような権限になる。
{testadmin=**/testadmin,"group testadmins=CT/testadmin"}
データベースに対してtestadminsグループのユーザ以外はCREATE権限を持たないので、SCHEMAを作成しようとしても、以下のようなエラーになる。
test=> CREATE SCHEMA testschema; ERROR: permission denied for database test
GRANT OPTIONも制御したい場合には、データベースのオーナをpostgres等にしないといけない。(そこまでやる必要があるかはともかく)