データベースの作成
ownerを指定する場合既存ユーザであること。ownerパラメータを省略した場合create文発行ユーザがオーナになり、tablespaceパラメータを省略した場合はデフォルト表領域にななります。
create database udondb with owner=udonman tablespace=spc01 ;
データベースの作成例
postgres=# create database udondb with owner=udonman tablespace=spc01
postgres-# ;
CREATE DATABASE
postgres=# select d.datname,u.usename as owner,pg_encoding_to_char(d.encoding),s.spcname
postgres-# ,pg_tablespace_location(d.dattablespace) as "Location"
postgres-# ,pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
postgres-# from pg_database d inner join pg_user u on d.datdba = u.usesysid
postgres-# left outer join pg_tablespace s on d.dattablespace = s.oid
postgres-# order by d.oid;
datname | owner | pg_encoding_to_char | spcname | Location | Access privileges
-----------+----------+---------------------+------------+-----------------------------+-----------------------
template1 | postgres | UTF8 | pg_default | | =c/postgres +
| | | | | postgres=CTc/postgres
template0 | postgres | UTF8 | pg_default | | =c/postgres +
| | | | | postgres=CTc/postgres
postgres | postgres | UTF8 | pg_default | |
smtdb01 | apuser | UTF8 | pg_default | |
udondb | udonman | UTF8 | spc01 | /var/lib/pgsql/14/tbs/spc01 |
(5 行)
postgres=#
必要な権限
必要な権限を付与
データベースを作成するユーザ(ロール)へgrant文を使いたくなりますがそうではありません。alter userにて権限付与となります。
alter user udonman createdb ;
create database権限を外す
alter user udonman nocreatedb ;