CREATE USER

Name

CREATE USER  --  新規ユーザのアカウント情報を作成する

Synopsis

CREATE USER username
    [ WITH PASSWORD password ]
    [ CREATEDB   | NOCREATEDB ]
    [ CREATEUSER | NOCREATEUSER ]
    [ IN GROUP     groupname [,
...] ]
    [ VALID UNTIL  'abstime' ]
  

入力

username

ユーザ名

password

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

これらの句は、データベースを作成するユーザの能力を定義します。 もし CREATEDB が指定された場合、ユーザ所有のデータベースを 作成することが許されます。NOCREATEDBを使うことで、 データベースを作成する能力を与えません。もしこの句を省略した 場合、NOCREATEBD がデフォルトとして使用されます。

CREATEUSER, NOCREATEUSER

これらの句は、Postgres インスタンスの中で、ユーザが新たなユーザを作ることを許す かどうかを決定します。この句を省略した場合のユーザの アトリビュートには NOCREATEUSER がセットされます。

groupname

このユーザを新規メンバーとして入れたいグループ名

abstime

VALID UNTIL 句は、ユーザの Postgres へのログインが有効では 無くなる絶対日時をセットします。 もし "pg_shadow" テーブルにユーザの パスワードが定義されてない場合、有効期限はユーザ認証の際には チェックされないということに注意してください。 もしこの句が省略された場合、 "pg_shadow" には NULL値が格納され、 ログインは永遠に有効になります。

出力

CREATE USER

コマンドが正常終了した場合に返るメッセージ。

説明

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 USERALTER 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
   

互換性

SQL92

SQL92 には CREATE USER 文は有りません。