createuserって?
PostgreSQLの新しいユーザアカウントを作成するよ。
SQLコマンドのCREATE ROLE/CREATE USER
と同じことをしているようだ
だけど、psqlでPostgreSQLにログインしないで使える
まずは構文を確認しようか
構文
createuser [接続オプション] [オプション] [ロールf名]
オプションもあるのか、確認しよう
オプション
オプション | 説明 |
---|---|
-P --pwprompt |
パスワードを設定する |
-s --superuser |
新しいユーザをスーパーユーザとして作成する |
-d --createdb |
データベースの作成を許可する |
-r --createrole |
新しいユーザの作成を許可する |
-l --login |
ログインを許可する(デフォルト) |
-S --no-superuser |
新しいユーザをスーパーユーザにしない(デフォルト) |
-D --no-createdb |
データベースの作成を禁止する(デフォルト) |
-R --no-createrole |
新しいユーザの作成を禁止する(デフォルト) |
-L --no-login |
ログインを禁止する |
大文字は禁止系なんですね
新しいユーザアカウントを作成できるのは、スーパーユーザとCREATEROLE権限があるユーザのみ
たしかに誰もが自由にユーザ作成されたら管理も大変だよな
早速createuser
を使ってユーザを作ってみよう
使用例
とりあえずtestユーザを作ってみよう。
パスワードも検証だからtestにして、スーパーユーザにしたくないから-S
をつけてと。
-bash-4.2$ createuser -U postgres -P -S test
新しいロールのためのパスワード:
もう一度入力してください:
パスワード:
特に完了したことはでないのか。
そしたら一覧で作成出来たか確認してみよう。
-bash-4.2$ psql -U postgres -c "\du"
ユーザ postgres のパスワード:
ロール一覧
ロール名 | 属性 | 所属グループ
----------+----------------------------------------------------------------------------+--------------
postgres | スーパーユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
test | | {}
おぉ、出来ている。
わざわざPostgreSQLに入らなくても作成できるのは楽だな。
実務にも活かせそうだ。