PostgreSQL 9.1.1文書
前のページ | 巻戻し |  | 早送り | 次のページ

# createuser

## 名前

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

## 概要

`createuser` [`connection-option`...] [`option`...] [`username`]

## 説明

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

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

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

## オプション

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

`username`

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

`-c `number``
`--connection-limit=`number``

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

`-d`
`--createdb`

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

`-D`
`--no-createdb`

  新しいユーザに対してデータベースの作成を禁止します。

`-e`
`--echo`

  createuserが生成しサーバに送信するコマンドを出力します。

`-E`
`--encrypted`

  データベースに格納するユーザのパスワードを暗号化します。 指定がない場合、デフォルトのパスワードの挙動が使用されます。

`-i`
`--inherit`

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

`-I`
`--no-inherit`

  新しいロールは自動的にメンバとして属するロールの権限を継承しません。

`-l`
`--login`

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

`-L`
`--no-login`

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

`-N`
`--unencrypted`

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

`-P`
`--pwprompt`

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

`-r`
`--createrole`

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

`-R`
`--no-createrole`

  新しいユーザに対して新しいロールの作成を禁止します。

`-s`
`--superuser`

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

`-S`
`--no-superuser`

  新しいユーザはスーパーユーザにはなりません。

`-V`
`--version`

  createuserのバージョンを表示し、終了します。

`-?`
`--help`

  createuserのコマンドライン引数の使用方法を表示し、終了します。

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

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

`-h `host``
`--host=`host``

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

`-p `port``
`--port=`port``

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

`-U `username``
`--username=`username``

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

`-w`
`--no-password`

  パスワードの入力を促しません。 サーバがパスワード認証を必要とし、かつ、`.pgpass`ファイルなどの他の方法が利用できない場合、接続試行は失敗します。 バッチジョブやパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。

`-W`
`--password`

  createuserは強制的にパスワード入力を促します。 （新しいユーザのパスワードではなく、サーバに接続するためのパスワードです）。

  サーバがパスワード認証を要求する場合createuserは自動的にパスワード入力を促しますので、これが重要になることはありません。 しかし、createuserは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。 こうした余計な接続試行を防ぐために`-W`の入力が有意となる場合もあります。

## 環境

`PGHOST`
`PGPORT`
`PGUSER`

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

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

## 診断

問題が発生した場合、考えられる原因とエラーメッセージの説明については、CREATE ROLEとpsqlを参照してください。 データベースサーバは対象ホストで稼働していなければなりません。 また、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

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

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

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

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

上の例で、実際には入力した新しいパスワードは画面上に表示されませんが、分かりやすくするために記載しています。 上記の通りこのパスワードはクライアントに送信される前に暗号化されます。 `--unencrypted`オプションが使用された場合、パスワードはコマンドの出力に（おそらくはサーバのログなどに）含まれて表示されます。 ですので、もし誰かに画面を覗き見されるかもしれない場合、パスワードを割り当てる際には`-e`を使用しないことを勧めます。

## 関連項目

dropuser, CREATE ROLE

前のページ | ホーム | 次のページ
createlang | 上に戻る | dropdb