【PostgreSQL】ユーザーを作成する(CREATE USER文、CREATEUSER)
ユーザーの作成
最初にですが、ユーザーを作成するには大きく2つの方法があります。
① SQLでCREATE USERを実行
② OSのコマンドラインからCREATEUSERコマンドを実行
そうだねと思う人はよいのですが、私は最初この「CREATE USER(間にスペースあり)」と、「CREATEUSER(間にスペースなし)」2つの違いがよくわかりませんでした。同じ状況の人もいるのではないかと思いそれぞれについて、この記事で説明しようと思います。
※わかりづらいと感じるユーザーとロールの違いについてはこちらで説明してます。
記事自体は長くないので、お時間がある時に見てもらえると嬉しいです。
① SQLでCREATE USERを実行(ユーザーを作成するSQL)
ユーザーを作成する一つ目の方法は、SQL文を発行してユーザーを作成する方法です。
SQLなので構文と具体例を下記に紹介します。psqlやpgAdmin上から可能です。
※下の例は「CREATE USER」としていますが「CREATE ROLE」でも実行できます。
-- ユーザー名「user1」を作成する構文
CREATE USER user1;
-- ユーザー名「user1」をパスワード「pass」で作成する
CREATE USER user1 WITH PASSWORD 'pass';
-- ユーザー名「user1」をパスワード「pass」で作成し、
-- パスワードの期限を2021年の終わりまで有効とする(指定しない場合は永遠に有効)
CREATE USER user1 WITH PASSWORD 'pass' VALID UNTIL 'Jan 1 2022';
-- ユーザー名「user1」をパスワード「pass」で作成し、
-- スーパーユーザー権限とする
CREATE USER user5 WITH PASSWORD 'pass' SUPERUSER;
-- ユーザー名「user1」をパスワード「pass」で作成し、
-- 権限にデータベース作成権限、ユーザー作成権限を加える(スーパーユーザーではない)
CREATE USER user1 WITH PASSWORD 'pass' CREATEDB CREATEROLE;
オプションについての補足
・ PASSWORD 'パスワードの値' / PASSWORD NULL
パスワードのパスワードを消すにはNULLを指定。パスワード認証がONでパスワードをNULLにしていると、認証は常に失敗する。
・ VALID UNTIL 'timestamp'
ユーザーのパスワードが無効になる日時を設定。指定なしの場合、パスワードは永遠に有効。
・ SUPERUSER / NOSUPERUSER
新しいユーザーが「スーパーユーザ」となるかどうかの設定。指定なしの場合は、「NOSUPERUSER」となる。
・ CREATEDB / NOCREATEDB
データベースの作成権限。指定なし場合のデフォルトは「NOCREATEDB」。
・LOGIN / NOLOGIN
ログイン可能かの権限。デフォルトはCREATE USERの場合は「LOGIN」、CREATE ROLEの場合は「NOLOGIN」となる。
② OSのコマンドラインからCREATEUSERコマンドを実行
ユーザーを作成するには、「createuser」コマンドを実行します。
Windows機を例にしますが、createuserコマンドはbinのcreateuser.exeを実行しています。
また画像をみるとわかるのですが、createroleというものはありません。
(コマンドでcreateroleと実行してもエラーとなります)
createuserコマンド
createuserコマンドは次のようになります。
コマンドプロンプトから実行します。
createuser -h サーバー名 -p ポート番号 -U 実行するユーザー名 -d -r -s 作成するユーザー名
createuser -h localhost -p 5432 -U postgres -d -l -r -s -P user1
createuser -h 192.168.10.10 -p 5432 -U postgres -d -l -r -s -P user2
createuser -U postgres -d -l -r -s -P user3 -- ローカル環境の場合
オプション
設定できるオプションは、小文字=許可、大文字=禁止
h … サーバーのホスト名やIPを指定
p … ポート番号を指定
U … createuserを実行するユーザー
d … データベースの作成権限、D … データベースの作成できない権限
l … ログイン権限、L … ログイン不可権限
r … ユーザー作成の権限、R … ユーザー作成ができない権限
s … スーパーユーザー権限の付与、S … スーパーユーザーでない権限の付与
P … パスワード設定する(厳密には実行時に、パスワード設定メッセージが表示される)
実行してみる
実行した様子は次のとおり。特に成功しました等のメッセージは出ません。
(エラーになればメッセージがでます)
以上、ユーザーを作成する方法でした。