CREATE USER username [ WITH PASSWORD password ] [ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ] [ IN GROUP groupname [, ...] ] [ VALID UNTIL 'abstime' ]
ユーザ名
WITH PASSWORD 句は、ユーザパスワードを "pg_shadow" テーブルにセットします。 この理由のため、"pg_shadow" は Postgres ユーザのパスワードが 初期値として NULL値でセットされる Postgres のインスタンスに アクセスすることができなくなります。
"pg_shadow" テーブルの中のユーザ パスワードが NULL 値である時、(HBA、PG_PASSWORDなどの) 従来通りのユーザ認証が行なわれます。ユーザにパスワードが 設定されている場合は、Postgres インスタンスに設定されている他の認証システムではなく、 新しい認証システムが使用されます。そして、 "pg_shadow"テーブル内のパスワードが 認証に使用されます。 この認証システムがどのように作用するかということの詳細は pg_crypt(3) を見てください。 もし WITH PASSWORD 句が省かれた 場合、ユーザのパスワードは上記に書かれた認証方式での NULL値 と同等に扱われる空白文字にセットされます。
これらの句は、データベースを作成するユーザの能力を定義します。 もし CREATEDB が指定された場合、ユーザ所有のデータベースを 作成することが許されます。NOCREATEDBを使うことで、 データベースを作成する能力を与えません。もしこの句を省略した 場合、NOCREATEBD がデフォルトとして使用されます。
これらの句は、Postgres インスタンスの中で、ユーザが新たなユーザを作ることを許す かどうかを決定します。この句を省略した場合のユーザの アトリビュートには NOCREATEUSER がセットされます。
このユーザを新規メンバーとして入れたいグループ名
VALID UNTIL 句は、ユーザの Postgres へのログインが有効では 無くなる絶対日時をセットします。 もし "pg_shadow" テーブルにユーザの パスワードが定義されてない場合、有効期限はユーザ認証の際には チェックされないということに注意してください。 もしこの句が省略された場合、 "pg_shadow" には NULL値が格納され、 ログインは永遠に有効になります。
CREATE USER は、Postgres の インスタンスに、新しいユーザを加えます。
新しいユーザの usesysid には
SELECT MAX(usesysid) + 1 FROM pg_shadow;が与えられます。 (訳注: pg_shadow テーブルにある usesysid の最大値に1を加えた もの。) これは、Postgres ユーザの usesysid が オペレーティングシステム(OS) のユーザ id と一致しないことを意味します。この規則の 例外は、postgres といわれるスーパユーザで、 OS のユーザ id が usesysid として initdb プロセスの間に使われます。 ユーザの OS ユーザ id とusesysidとを 一致させたい場合は、Postgres 配布物内にある createuser スクリプトを使用して下さい。
CREATE USER 文は、 Postgres の言語拡張です。
ユーザアカウントの削除や変更には、 DROP USER や ALTER USER を使います。
詳しくは、pg_shadow テーブルを参照 してください。
Table = pg_shadow +--------------------------+--------------------------+-------+ | Field | Type | Length| +--------------------------+--------------------------+-------+ | usename | name | 32 | | usesysid | int4 | 4 | | usecreatedb | bool | 1 | | usetrace | bool | 1 | | usesuper | bool | 1 | | usecatupd | bool | 1 | | passwd | text | var | | valuntil | abstime | 4 | +--------------------------+--------------------------+-------+
パスワード無しでユーザを作成する:
CREATE USER jonathan
パスワード付きでユーザを作成する:
CREATE USER davide WITH PASSWORD jw8s0F4
2001年の終わりまで有効なアカウントを持ったパスワード付きユーザ を作成する。ただし、2002年に1秒でも入った後は、もうその アカウントは有効ではないことに注意:
CREATE USER miriam WITH PASSWORD jw8s0F4 VALID UNTIL 'Jan 1 2002'
データベースを作成可能なユーザアカウントを作成する:
CREATE USER manuel WITH PASSWORD jw8s0F4 CREATEDB