createuser は、新しい PostgreSQL ユーザを作成します。 スーパーユーザ (pg_shadow テーブルで usesuper が設定されているユーザ) のみが新しい PostgreSQL ユーザを作成できます。 したがって、createuser は、PostgreSQL スーパーユーザとして接続可能なユーザによって実行されなければなりません。
また、スーパーユーザであることは、そのデータベースにおけるアクセス権限の検査を素通りできることを意味しています。 ですから、スーパーユーザという地位を簡単に与えてはなりません。
createuser は SQL コマンド CREATE USER のラッパです。 したがって、このユーティリティによるユーザを作成しても、これ以外の方法でサーバにアクセスしてユーザを作成しても特別な違いはありません。
createuser では、下記のコマンドライン引数を指定できます。
作成する PostgreSQL ユーザの名前を指定します。 この名前は、全ての PostgreSQL ユーザ名の中で一意でなければなりません。
新しいユーザは、他のユーザを作成することが許可されます。 (注意: 実際には、これにより新しいユーザは スーパーユーザ となります。 このオプションのネーミングは適切ではありません。)
新しいユーザが他のユーザを作成することを禁止します。 (つまり、新しいユーザはスーパーユーザではなく、一般ユーザとなります。) これがデフォルトです。
新しいユーザは、データベースの作成が許可されます。
新しいユーザは、データベースの作成が禁止されます。 これがデフォルトです。
createuser が生成し、サーバに送信したコマンドをエコー表示します。
データベースに保存する、ユーザのパスワードを暗号化します。 指定されない場合はデフォルトのパスワードの振舞いが使用されます。
新しいユーザにデフォルト以外のユーザ ID を指定することができます。 必要ではありませんが、これを好む人たちもいます。
データベースに保存する、ユーザのパスワードを暗号化しません。 指定されない場合はデフォルトのパスワードの振舞いが使用されます。
これが指定されると、createuser は新しいユーザのパスワードのプロンプトを表示します。 もしパスワード認証を使う予定がなければ、これは必要ありません。
応答を表示させないようにします。
コマンドラインで指定しない場合、名前や他の不足している情報の入力が要求されます。
createuser は、以下のコマンドライン引数も接続パラメータとして受けつけます。
サーバが稼働しているマシンのホスト名を指定します。この値がスラッシュから始まる場合、Unix ドメインソケット用のディレクトリとして使用されます。
サーバが接続を監視する TCP ポートもしくは Unix ドメインソケットファイルの拡張子を指定します。
接続に使用するユーザ名です。(作成するユーザの名前ではありません)
パスワードのプロンプトを強制的に表示します (新しいユーザのパスワードではなく、サーバに接続するためのパスワードです)。
問題が発生した場合、CREATE USER と psql における潜在する問題とエラーメッセージの説明を参照してください。 データベースサーバは対象ホストで稼働していなければなりません。 また、libpq フロントエンドライブラリで使用される、全ての接続設定と環境変数が適用されます。
joe というユーザを、デフォルトデータベースサーバ上に作成します。
$ createuser joe Is the new user allowed to create databases? (y/n) n Shall the new user be allowed to create more new users? (y/n) n CREATE USER
ホスト eden 上のポート番号 5000 のサーバを使って同じユーザ joe を作成し、プロンプトを回避し、背後で実行される問い合わせを表示します。
$ createuser -p 5000 -h eden -D -A -e joe CREATE USER "joe" NOCREATEDB NOCREATEUSER CREATE USER