CnetOS のベースリポジトリにあるPostgreSQLのバージョンによって、createuser の動作が異なる件。
知人に何回も聞かれるのでメモ。
CnetOS 6.x(PostgreSQL 8.4)の場合
$ createuser -U postgres test1 Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n
上記のように、ユーザ作成時に一部の属性を対話形式で設定できる。
CnetOS 7.x(PostgreSQL 9.2)の場合
$ createuser -U postgres test1
PostgreSQL 9.2 以降は、何も聞いてこない。すべて n で答えたものとなる。
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication | {} test1 | | {}
従来のように、createuser 時に対話式で一部の設定を行いたい場合は、「--interactive」オプションを付ける。
$ createuser -U postgres --interactive test2 Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication | {} test1 | | {} test2 | Create DB | {}
「--interactive」オプションは、9.2 以降のドキュメントに記載されている。
PostgreSQL 9.2
https://www.postgresql.jp/document/9.2/html/app-createuser.html
リリースノートを探したら、9.2のやつに記載されていた。
https://www.postgresql.jp/document/9.2/html/release-9-2.html
createuserは、デフォルトではオプション設定のためのプロンプトを表示しないようになりました。(Peter Eisentraut)
以前と同じ動作をさせるには--interactiveを使ってください。
--interactiveが指定されていなければ、dropuserはユーザ名のプロンプトを表示しないようにしました。(Peter Eisentraut)