CREATE USER username [ [ WITH ] option [ ... ] ] ここで option は以下のとおりです。 SYSID uid | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | IN GROUP groupname [, ...] | VALID UNTIL 'abstime'
CREATE USER を使用すると、PostgreSQL のインスタンスに、新しいユーザを加えることができます。 ユーザの管理と認証に関する情報については、管理者用ガイドを参照して下さい。このコマンドを使用するにはデータベースのスーパーユーザでなければなりません。
ユーザの名前です。
SYSID 句を使用して、作成されるユーザの PostgreSQL ユーザ ID を選択することができます。 ユーザ ID は UNIX ユーザ ID に合わせる必要は全くありませんが、同じ番号を選ぶ人もいます。
この句が指定されない場合、割り当てられたユーザ ID の最大値に 1 を足したものがデフォルトとして使われます (100 が最小値です)。
ユーザのパスワードを設定します。もしパスワード認証を使う予定がなければこのオプションは省略できます。 しかし、このユーザはパスワード認証をしているサーバに接続できません。 ALTER USER を使用して、後でパスワードを設定することも変更することも可能です。
これらのキーワードを使用すると、パスワードを暗号化して pg_shadow に格納するかどうかを制御できます。(どちらも設定されていない場合のデフォルトの動作は、PASSWORD_ENCRYPTION サーバパラメータによって決まります。) 指定された文字列がすでに MD5 暗号化書式である場合は、ENCRYPTED、UNENCRYPTED のどちらが指定されているかに関係なく、そのまま保存されます。 これにより、ダンプ/リストアの時に暗号化パスワードを再読み込みすることができます。
認証機能の設定方法に関する詳細は、管理者用ガイドの「クライアント認証」の章を見て下さい。 古めのクライアントでは、暗号化して保存されたパスワードを使用するために必要な MD5 認証機構をサポートしていない場合があることに注意して下さい。
この句はユーザのデータベースの作成に関する権限を定義します。 CREATEDB が指定された場合、そのユーザは、自己所有のデータベースを作成することができます。 NOCREATEDB を使用した場合、作成されるユーザには、データベースを作成する権限が与えられません。 この句を省略した場合は、NOCREATEDB がデフォルトとして使用されます。
ユーザが自分で新しいユーザを作成できるかどうかを決定します。またこのオプションにより、そのユーザは全てのアクセス制限を上書きできるスーパーユーザになります。 この句を省略した場合、ユーザの属性には NOCREATEUSER が設定されます。
新しいメンバとしてユーザを挿入するグループの名前です。 複数のグループ名を指定することができます。
VALID UNTIL 句は、ユーザのパスワードが有効でなくなるまでの絶対日時を設定します。 この句が省略された場合、永遠にログイン可能になります。
ユーザの属性を変更するには ALTER USER を、ユーザを削除するには DROP USER を使用してください。 ユーザをグループに追加したり、グループから削除したりするには、ALTER GROUP を使用してください。 PostgreSQL には、このコマンドと同じ機能を持つ (実際は、このコマンドを呼び出しています) プログラム createuser があり、コマンドシェルから実行することができます。
以下のようにすると、パスワードを持たないユーザを作成できます。
CREATE USER jonathan;
また、以下のようにすると、パスワードを持つユーザを作成できます。
CREATE USER davide WITH PASSWORD 'jw8s0F4';
以下の例では、アカウントが 2001 年の終りまで有効なパスワードを持つユーザを作成しています。 2002 年に一秒でも入った後はアカウントが有効ではなくなるので注意して下さい。
CREATE USER miriam WITH PASSWORD 'jw8s0F4' VALID UNTIL 'Jan 1 2002';
以下の例では、データベースを作成することのできるアカウントを作成しています。
CREATE USER manuel WITH PASSWORD 'jw8s0F4' CREATEDB;