【JPUG主催】PostgreSQLカンファレンス2020【11月13日開催】
他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

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コマンドのラッパとして提供されています。

データベースシステム自身を起動するために、初期化されたばかりのシステムはいつも定義済みのユーザを1人持ちます。このユーザは固定のID 1 を持ち、デフォルトでは(initdb実行時に変更しない限り)その領域を初期化した(、そしておそらくサーバを起動したユーザとして使用される)オペレーティングシステムユーザと同じ名前です。習慣的にこのユーザは postgres と名付けられます。さらにユーザを作る場合はまずこの初期ユーザで接続しなければいけません。

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

7.1.1. ユーザ属性

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

スーパーユーザ

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

データベース作成

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

パスワード

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

ユーザ属性は作成した後に ALTER USER コマンドで変更することができます。詳細はCREATE USERALTER USERのリファレンスページを参照してください。