createuser は、新しい PostgreSQL ユーザを作成します。 スーパーユーザ (pg_shadow テーブルで usesuper が設定されているユーザ) のみが新しい PostgreSQL ユーザを作成できます。したがって、createuser は、PostgreSQL スーパーユーザとして接続可能なユーザによって実行されなければなりません。
また、スーパーユーザであることは、そのデータベースにおけるアクセス権限の検査を素通りできることを意味しています。ですから、スーパーユーザという地位を簡単に与えてはなりません。
createuser は PostgreSQL 対話的ターミナル psql 経由で実行される SQL コマンド CREATE USER のシェルスクリプトラッパーです。したがって、これ以外の方法でユーザを作成しても特別な違いはありません。psql がスクリプトから参照可能であり、データベースサーバがターゲットのホストで稼働していなければなりません。 また、psql および libpq フロントエンドライブラリで使用される、全てのデフォルト設定や環境変数が適用されます。
createuser では、下記のコマンドライン引数を指定できます。
作成する PostgreSQL ユーザの名前を指定します。 この名前は、全ての PostgreSQL ユーザ名の中で一意でなければなりません。
新しいユーザは、他のユーザを作成することが許可されます。(注意: 実際には、これにより新しいユーザは スーパーユーザ となります。 このオプションのネーミングは適切ではありません。)
新しいユーザが他のユーザを作成することを禁止します (つまり、新しいユーザはスーパーユーザではなく、一般ユーザとなります)。
新しいユーザは、データベースの作成が許可されます。
新しいユーザは、データベースの作成が禁止されます。
createuser が生成し、サーバに送信した問い合わせをエコー表示します。
データベースに保存する、ユーザのパスワードを暗号化します。 指定されない場合はデフォルト値が使用されます。
新しいユーザにデフォルト以外のユーザ ID を指定することができます。 必要ではありませんが、これを好む人たちもいます。
データベースに保存する、ユーザのパスワードを暗号化しません。 指定されない場合はデフォルト値が使用されます。
これが指定されると、createuser は新しいユーザのパスワードのプロンプトを表示します。 もしパスワード認証を使う予定がなければ、これは必要ありません。
返答を表示させないようにします。
コマンドラインで指定しない場合、名前や他の不足している情報の入力が要求されます。
createuser は、以下のコマンドライン引数も接続パラメータとして受けつけます。
サーバが稼働しているマシンのホスト名を指定します。ホスト名がスラッシュから始まる場合、Unix ドメインソケット用のディレクトリとして使用されます。
サーバが接続を監視するインターネット TCP/IP ポートもしくは Unix ドメインソケットファイルの拡張子を指定します。
接続に使用するユーザ名 (作成するユーザの名前ではありません)
パスワードのプロンプトを強制的に表示します (新しいユーザのパスワードではなく、サーバに接続するためのパスワードです)。
正常に実行されました。
何らかの問題がありました。 ユーザは作成されませんでした。
エラー条件があれば、バックエンドのエラーメッセージが表示されます。この場合に表示されるメッセージについては、CREATE USER と psql を参照して下さい。
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