【PostgreSQL】ユーザーを作成する(CREATE USER文、CREATEUSER)

2021年9月2日PostgreSQL入門, PostgreSQL構文

ユーザーの作成

最初にですが、ユーザーを作成するには大きく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 … パスワード設定する(厳密には実行時に、パスワード設定メッセージが表示される)

 

実行してみる

実行した様子は次のとおり。特に成功しました等のメッセージは出ません。

(エラーになればメッセージがでます)

以上、ユーザーを作成する方法でした。

 

 

関連記事

ユーザー(ロール)の作成、削除の方法

CREATE USERとCREATE ROLEの違い

ユーザー情報を変更する(ALTER ROLE、ALTER USER)

ユーザーを削除する(DROP USER文、DROPUSER)