createuser

Name

createuser  --  新規 Postgres ユーザを作成する

Synopsis

createuser [ username ]
createuser [ -h host ] 
    [ -p port ]
    [ -i userid ] 
    [ -d | -D ] [ -u | -U ]
    [ username ]
  

入力

-h host

postmaster が起動しているマシンの ホスト名を定義します。デフォルトは、IP 接続ではなく、 ローカル Unix ドメインソケットを使います。

-p port

postmaster が接続の為に監視する インターネット TCP/IP ポート、あるいはローカル Unix ドメイン ソケットファイル拡張子を定義します。デフォルトポートは 5432 、あるいは (もし、設定されている場合は) 環境変数 PGPORT の値です。

-d

このユーザにデータベースを作ることを許します。

-D

このユーザにデータベースを作ることを禁止します。

-i userid

ユーザに関連付けされる数値型の識別子 (ID) を定義します。 この識別子は Postgres の全ての ユーザに対し一意でなければなりません。また、これは オペレーティングシステムの UID と一致する必要は有りません。 識別子をコマンドラインで定義しなかった場合、UID と同じ識別子 の使用を促されます。

-u

このユーザに他のユーザを作ることを許します。

-U

このユーザに他のユーザを作ることを禁止します。

username

登録する Postgres ユーザの名前を 定義します。 このユーザ名は Postgres の全ての ユーザに対し一意でなければいけません。 ユーザ名をコマンドラインで定義しなかった場合、後からユーザ名 の入力を促されます。

出力

createuser は、 pg_user 、または pg_shadow といったシステムテーブルに 登録を加えます。

Connection to database 'template1' failed. connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port 'port'? createuser: database access failed.

createuser が指定されたホストと ポート上の postmaster プロセスに 接続することができませんでした。もしこのメッセージが表示さ れた場合、postmaster が正しいホ スト上で動作していることと、正しいポートを指定したことを 確認してください。もしサイトが認証システムを使っている場合、 必要な認証資格を受けていることを確認してください。

Connection to database 'template1' failed. FATAL 1: SetUserId: user 'username' is not in 'pg_shadow' createuser: database access failed.

pg_shadow 表に有効な登録が無く、 そして Postgres にアクセス することを許されていません。 Postgres の管理者に連絡して ください。

createuser: username cannot create users.

新規ユーザを作る権利を持っていません; Postgres のサイト管理者に連絡して ください。

createuser: user "username" already exists

登録しようとしているユーザは既に pg_shadow クラスに登録されています。

database access failed

psql 内か、あるいはバックエンド サーバ内で内部エラーが発生しました。サイト管理者が正しく Postgres をインストールし、 initdb を使って初期化したか確認 してください。

Note: createuser は、内部的には psqltemplate1 データベースに接続している 間に、CREATE USER を動かします。 (訳注: v6.5.3 では、pg_shadow テーブルに新しいユーザの エントリを直接挿入しているようです。v7.0 では、SQL の CREATE USER を使用しています。)

説明

createuser は、新規 Postgres ユーザを作成します。 pg_shadow クラスに usesuper がセットされているユーザだけが 新規 Postgres ユーザを作成できます。 出荷時点では、postgres というユーザが ユーザを作成できます。

createuser は、 psql を呼び出すシェルスクリプトです。 その為、postmaster プロセスが、 createuser の実行以前に、 データベースサーバのホスト上で起動していなければなりません。 PGOPTIONPGREALM という 環境変数が、psql に渡され、そして 実行されます。詳細は、 psql で説明されて います。

createuser が一度呼び出されると、 コマンドライン上に指定されなかったパラメータを得るために 一連の質問をします。 新規ユーザのデータベースログイン名と数値型のユーザ識別子は 必ず指定しなければいけません。

Note: Postgres のユーザ識別子と、 ユーザの Unix UID と同じである必要は有りませんが、 一般的にはそれらは同じ物が割り当てられます。

さらに、セキュリティ目的のために新規ユーザの権限を記述 しなくてはなりません。 明確に言えば、新規ユーザが Postgres のスーパーユーザを務めるべきかどうか、新しいデータベースを 作ってもよいかどうか、そして他の新規ユーザを作ることを許される べきかどうかが尋ねられます。