無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

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

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

--interactive

ユーザ名がコマンドラインで指定されない場合、ユーザ名の入力を促し、更に -d / -D -r / -R -s / -S オプションがコマンドラインで指定されない場合にはどちらにするか入力を促します。 (これはPostgreSQL 9.1までのデフォルトの動作でした。)

-l
--login

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

-L
--no-login

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

-N
--unencrypted

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

-P
--pwprompt

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

-r
--createrole

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

-R
--no-createrole

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

-s
--superuser

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

-S
--no-superuser

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

-V
--version

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

--replication

新しいユーザは REPLICATION 権限を持ちます。 この権限については CREATE ROLE の文書で多く説明します。

--no-replication

新しいユーザは REPLICATION 権限を持ちません。 この権限については CREATE ROLE の文書で多く説明します。

-?
--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.14 を参照してください)。

診断

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

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


$ 

createuser joe

デフォルトデータベースサーバ上に joe というユーザを一部の属性入力が促されるように作成します。


$ 

createuser --interactive 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

powered by SEO.CUG.NET