CREATEUSER(1)

NAME
createuser - 新しいPostgreSQLユーザアカウントを定義する

SYNOPSIS

createuser [ option... ] [ username ]

説明

createuserは新しいPostgreSQLユーザ（より正確にいえばロール）を作成します。 新しいユーザを作成できるのは、スーパーユーザとCREATEROLE権限を持つユーザのみです。 したがって、createuserは、スーパーユーザもしくはCREATEROLE権限を持つユーザとして接続可能なユーザによって実行されなければなりません。

新しいスーパーユーザを作成したいのであれば、スーパーユーザとして接続しなければなりません。CREATEROLEだけではいけません。 スーパーユーザであるということは、そのデータベースにおけるアクセス権限の検査を素通りできることを意味しています。 したがって、スーパーユーザという地位を簡単に与えてはなりません。

createuserはCREATE ROLE [create_role(l)] SQLコマンドのラッパです。 このユーティリティによってユーザを作成しても、これ以外の方法でサーバにアクセスしてユーザを作成しても特に違いはありません。

オプション

createuserでは、下記のコマンドライン引数を指定できます。

username
    作成するPostgreSQLユーザの名前を指定します。 この名前は、そのPostgreSQLインストレーションの中で一意でなければなりません。

-s

--superuser
    新しいユーザはスーパーユーザになります。

-S

--no-superuser
    新しいユーザはスーパーユーザにはなりません。 これがデフォルトです。

-d

--createdb
    新しいユーザに対してデータベースの作成を許可します。

-D

--no-createdb
    新しいユーザに対してデータベースの作成を禁止します。 これがデフォルトです。

-r

--createrole
    新しいユーザに対して新しいロールの作成を許可します。 （つまり、このユーザはCREATEROLE権限を持つことになります。）

-R

--no-createrole
    新しいユーザに対して新しいロールの作成を禁止します。 これがデフォルトです。

-l

--login
    新しいユーザに対してログインを許可します。 （つまり、このユーザ名をセッション起動時のユーザ識別子として使用することができます。） これがデフォルトです。

-L

--no-login
    新しいユーザに対してログインを禁止します。 （ログイン権限を持たないロールはデータベース権限管理という面で有意です。）

-i

--inherit
    新しいロールは自動的にそのロールがメンバであるロールの権限を継承します。 これがデフォルトです。

-I

--no-inherit
    新しいロールは自動的にそのロールがメンバであるロールの権限を継承しません。

-c number

--connection-limit number
    新しいユーザの最大接続数を設定します。 デフォルトは無制限です。

-P

--pwprompt
    このオプションが指定されると、createuserは新しいユーザのパスワードのプロンプトを表示します。 もしパスワード認証を使う予定がなければ、これは必要ありません。

-E

--encrypted
    データベースに保存する、ユーザのパスワードを暗号化します。 このオプションが指定されていない場合は、デフォルトのパスワードの挙動が使用されます。

-N

--unencrypted
    データベースに保存するユーザのパスワードを暗号化しません。 このオプションが指定されていない場合は、デフォルトのパスワードの挙動が使用されます。

-e

--echo
    createuserが生成し、サーバに送信したコマンドをエコー表示します。

-q

--quiet
    このオプションが指定されると、応答が表示されなくなります。

コマンドラインで指定されていない場合、名前やその他の不足する情報を入力するよう要求されます。

createuserは、以下のコマンドライン引数も接続パラメータとして受け付けます。

-h host

--host host
    サーバが稼働しているマシンのホスト名を指定します。 この値がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。

-p port

--port port
    サーバが接続を監視するTCPポートもしくはUnixドメインソケットファイルの拡張子を指定します。

-U username

--username username
    接続に使用するユーザ名です（作成するユーザの名前ではありません）。

-W

--password
    このオプションを指定すると、パスワードのプロンプトを強制的に表示します（新しいユーザのパスワードではなく、サーバに接続するためのパスワードです）。

環境

PGHOST

PGPORT

PGUSER
    デフォルトの接続パラメータです。

また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します（in the documentationを参照してください）。

診断

問題が発生した場合、考えられる原因とエラーメッセージの説明については、CREATE ROLE [create_role(l)]とpsql(1)を参照してください。 データベースサーバは対象ホストで稼働していなければなりません。 また、libpqフロントエンドライブラリで使用される、全ての接続設定と環境変数が適用されることを覚えておいてください。

例

デフォルトデータベースサーバ上に、joeというユーザを作成します。

$ createuser joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE USER

edenホスト上のポート番号5000のサーバを使って上記と同じjoeというユーザを作成し、プロンプトを回避し、背後で実行される問い合わせを表示します。

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
CREATE ROLE

joeというユーザをスーパーユーザとして作成します。作成時にパスワードを割り当てます。

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'xyzzy' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
CREATE ROLE

上の例で、実際には入力した新しいパスワードは画面上に表示されませんが、分かりやすくするために記載しています。 しかし、上記の通りパスワードはコマンドのエコー表示内に現れます。 ですので、もし誰かに画面を覗き見されるかもしれない場合、パスワードを割り当てる際には-eを使用しないことを勧めます。

関連項目
dropuser(1), CREATE ROLE [create_role(l)]