Chapter 7. データベースユーザと権限管理

Table of Contents
7.1. データベースユーザ
7.2. グループ
7.3. 権限
7.4. 関数とトリガ

データベースユーザと彼らの権限の管理は、概念的にはUnixオペレーティング システムのそれに似ていますが、説明をしなくてもよいほど同じ というわけではありません。

7.1. データベースユーザ

データベースユーザは概念的に、どのオペレーティングシステム ユーザとも完全に異なります。実践ではユーザ名と一致させておくと 便利ですが、必須ではありません。データベースユーザ名 はデータベースクラスタインストールを通して共通です (個別のデータベースごとにではありません)。ユーザを作成する ためには SQL コマンド CREATE USER を使います。

CREATE USER name
name は SQL 識別子のルールに 従います。特殊な文字を持たない無装飾のものか、二重引用符 に囲まれたもののどちらかです。既存のユーザを削除するためには 類似のコマンド DROP USER を使います。

便利なものとして、シェルスクリプト createuserdropuser がありますが、これらの SQL コマンドの ラッパーです。

データベースシステム自身を起動するために、初期化された ばかりのシステムはいつも定義済みのユーザを一人持ちます。このユーザは その領域を初期化したオペレーティングシステムユーザと(そしておそらく サーバを起動したユーザとして使われている)サーバ同じ名前です。 したがって、もともと"postgres"ユーザ が存在することがしばしばあります。さらにユーザを作る場合は まずこのユーザで接続しなければなりません。

特定のデータベース接続に使うユーザ名は、アプリケーション指定の 流儀で接続要求を出すクライアントによって示されます。例えば、 psql プログラムはコマンドラインオプション -Uを接続するユーザを示すために使います。 与えられたクライアント接続が接続できるデータベースユーザの 集合は、Chapter 4で説明されているように、 クライアント認証の設定によって決められます。(したがって、ユーザの ログイン名が本名と一致していなくても良いのと同じように、クライアント は必ずしもオペレーティングシステムユーザ名と同じ名前で接続する 必要はありません。)

7.1.1. ユーザ属性

データベースユーザには、権限やクライアント認証システムに関わる定義 を表す沢山の属性があります。

スーパーユーザ

データベースのスーパーユーザは全ての権限認証をパスします。 そして、スーパーユーザのみが新しいユーザを作ることができます。 データベースのスーパーユーザを作るためにはCREATE USER name CREATEUSERを使います。

データベース作成

データベースを作成するためにはユーザは明示的に権限を 指定しておかねばいけません(スーパーユーザは全ての権限認証を パスするので除かれます)。そのようなユーザを作るためには CREATE USER name CREATEDBを使います。

パスワード

パスワードは、パスワード認証がクライアント認証に使われる場合に のみ重要になります。データベースパスワードはどのオペレーティング システムパスワードとも異なります。ユーザ作成時に CREATE USER name WITH PASSWORD 'string' のようにパスワードを指定します。

詳細はCREATE USERALTER USER のリファレンスページを見て下さい。