関数とトリガ全てのデータベースクラスタに、データベースユーザの集合が含まれます。これらのユーザは、サーバが稼働しているオペレーティングシステムによって管理されているユーザとは別のものです。ユーザはデータベースオブジェクト(例えばテーブル)を所有しており、これらのオブジェクトについての権限を他のユーザに割り当てて、誰がどのオブジェクトにアクセスできるかを制御できます。この章では、ユーザの作成と管理の方法について説明するとともに、権限システムについて紹介します。データベースオブジェクトの様々な種類や権限の効果についての詳細な情報は第5章に記載されています。データベースユーザデータベースユーザは概念的に、オペレーティングシステムユーザとは完全に分離されています。実際にはユーザ名を一致させておくと便利ですが、必須ではありません。(個別のデータベース毎ではありません)。SQLコマンドを使います。name;nameはSQL識別子の規則に従います。特殊な文字を持たない無装飾のものか、二重引用符に囲まれたもののどちらかです。USERを使用してください。name;便利なように、これらのSQLコマンドのラッパである、シェルのコマンドラインから呼び出し可能なcreateuserプログラムとdropuserプログラムが提供されています。name既存のユーザ群を求めるためには、以下のようにpg_userシステムカタログを確認してください。pg_user;また、psqlプログラムの\duメタコマンドも既存のユーザを列挙する際に役に立ちます。データベースシステム自身を起動するために、初期化されたばかりのシステムは常に定義済みのユーザを1人持ちます。1を持ち、デフォルトでは(initdb実行時に変更しない限り)そのデータベースクラスタを初期化したオペレーティングシステムユーザと同じ名前となります。習慣的にこのユーザはpostgresと名付けられます。ユーザを追加する場合はまずこの初期ユーザで接続しなければいけません。データベースサーバへの接続において、正確に1つのユーザIDが活動中となります。接続要求を初期化するクライアントによって指示されます。psqlプログラムでは、-Uコマンドラインオプションを使って接続するユーザを指示します。含む)では、オペレーティングシステムの現在のユーザ名をデフォルトと仮定します。従って、2つのユーザの組み合わせ間で名前を一致させておくと便利です。(従って、ユーザのログイン名が本名と一致していなくてもかまわないのと同様に、クライアントは必ずしもオペレーティングシステムのユーザ名と同じ名前で接続する必要はありません)。接続したクライアントに付与される権限の内容はユーザIDによって決定されるため、マルチユーザ環境を設定する際にはユーザIDを注意深く設定することが重要です。