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