データベース - postgreSQL - ロール(ユーザ)


 クラウディア


1. 概要
2. ユーザ作成
3. 後から権限を付与

1. 概要

 データベースを作成したり、アクセスすることができるのは、初期状態では、「postgres」ユーザのみです。  他のユーザ(「PostgreSQL」的には「ロール」)は、別途作成する必要があります。  最近(2020年12月23日)、そういうことをしていなかったので、すっかり忘れていました。  本ページは、下記のサイトを参考にさせていただきました。
ALTER ROLE

2. ユーザ作成

 「postgres」ユーザで。

createuser [option] user
 これで、ユーザを作成することができます。  オプションは、以下の通り。
オプション 意   味  備考 
-d ロールにデータベースの作成権限を与える
-r ロールにロールを作成する権限を与える
-s ロールに postgres ユーザと同等の権限を与える

 これは、開発時の仮想環境内、外部から接続負荷な状況でのことですが。
 ログインユーザと同じユーザで。


sudo -u postgres createuser -s user_name
 と作成すれば、開発作業が楽になります。  接続ポート番号を変更している場合は、「--port=portnumber」のオプションをつけます。

3. 後から権限を付与

 では、「postgres」と同じ権限を持たないロール、あとから権限を付与するにはどうするか?  手っ取り早いのは、「dropuser」をしてから、前項の「createuser」をすればよいのですが、そのロールが所有するデータベースが存在する場合。

dropuser: エラー: ロール "role_name"の削除に失敗しました: ERROR:  他のオブジェクトが依存していますのでロール "role_name" を削除できません
 と、エラーになります(この後、所有するデータベースが列挙される)。  これは、「postgres」ユーザで、下記の「SQL」を実行することになります。

 alter role role_name with SUPERUSER;

earthcar(アースカー)