PostgreSQLのユーザーリスト

PostgreSQLユーザーのリスト

PostgreSQLリストユーザー

PostgreSQLリストユーザー

どのデータベースでも、データベースにアクセスできる複数のユーザーを作成しておく必要があります。 各ユーザーには特定のアクセス権限が必要であり、そのユーザーを承認する必要があります。 デフォルトでは、PostgreSQLデータベースサーバにはPostgresという名前のデフォルトユーザがあります。 これは、すべてのデータベースとテーブルに付与されたすべての権限と特権を持つスーパーユーザーです。 彼自身が新しいユーザーを作成してロールを割り当てたり、他のユーザーに権限を付与したり取り消したりすることができます。 多くの場合、スーパーユーザまたはデータベース管理者は、現在のデータベースサーバに存在するすべてのユーザについて知っている必要があります。 この記事では、現在のデータベースサーバーに存在するすべてのユーザーを一覧表示する方法を学習します。 まず、ユーザー関連のデータがデータベース内でどこに格納され、操作されているかを検討します。

PostgreSQLのリストユーザー

以下は、三つの異なるリストユーザーです:

無料のデータサイエンスコースを開始

Hadoop、データサイエンス、統計&その他

1. PostgreSQLのユーザーデータ

すべてのユーザー関連データは、pg_catalogというスキーマに属するpg_userという名前のテーブルに格納されます。 このテーブルは、username、usesysid、usecreatedb、usesuper、userepl、usebypassrls、passwd、valuntil、useconfigなどのすべての情報で構成されています。 Username、usesysid、およびpasswdは、ユーザーのmd5ハッシュ暗号化システムに格納されている名前、id、およびパスワードです。 同時に、他のすべてのパラメータは、ユーザーがその権限を持っているかどうかを指定するbooleanパラメータです。usesuperは、そのユーザーがスーパーユーザーかどうかを指定します。 はいの場合は、trueを表すtとして値が含まれ、falseを意味するfが含まれます。 私たちは実用性で取得された他のすべてのフィールドが何を意味するかを見てみましょう。

  • Usecreatedb:このフィールドは、特定のユーザーが新しいデータベースを作成でき、その権限を持っているかどうかを示します。
  • Userepl:他の多くのデータベースで単一のテーブルのレプリケーションを作成できます。 その権限を持つ特定のユーザーのみがこれを行うことができます。 したがって、ユーザーが新しいレプリカを作成する権限を持っている場合、このフィールドはtrueに設定されます。
  • Usebypassrls:このフィールドは、ユーザーがRLSをバイパスすることが許可されている場合にのみtrueに設定されています

まず、pg_userテーブルからユーザー関連の情報を取得す 次の方法でクエリを構築する必要があります-

コード:

SELECT * FROM pg_catalog.pg_user;

出力:

PostgreSQLリストユーザー- 1

PostgreSQLユーザーのリスト- 1

名前を含むユーザーのリストのみを取得する場合は、次のクエリを実行できます。

コード:

SELECT usename FROM pg_catalog.pg_user;

出力:

PostgreSQLユーザーのリスト- 2

PostgreSQLユーザーのリスト- 2

2. メタコマンドを使用する

PostgreSQLは、メタコマンドを使用できるpsqlという素晴らしいユーティリティを提供します。 メタコマンドは、データベース管理者の作業を非常に簡単にするために使用できる短い既製のユーティリティです。 ユーザー関連のデータ\を取得するために、duは使用できるメタコマンドです。 このためには、PostgreSQLでpsqlコマンドプロンプトを使用する必要があります。 このコマンドを実行して、それが得られている結果であることを確認してみましょう:

コード:

\du

出力:

PostgreSQLユーザーのリスト- 3

PostgreSQLユーザーのリスト- 3
  • ここで、ロール名はユーザーの名前です。 役割のリスト、すなわち 特定のユーザーが自分自身のために持っているロールである属性。 スーパーユーザー、Create role、CREATE DB、Replication、Bypass RLSは、スーパーユーザーに割り当てられたルールであり、スーパーユーザーは新しいロールとユーザーの作成、新しいデータベースの作成、既存のオブジェクトの
  • “Member of”フィールドは、ユーザーが任意のグループのメンバーであるかどうかを指定します。 PostgreSQLでは、データベース管理者は複数のグループを作成し、異なるグループに異なるユーザーを追加することができます。 そのようなグループがあり、その特定のユーザーが特定のグループに属している場合、そのグループの名前は、フィールドMember Of列のそのユーザーの前に表示されます。
  • このメタコマンドは、ユーザー情報を取得するためにpg_catalog.pg_userテーブルに対して内部的にクエリを起動します。 ここでは、ユーザーの名前としてロール名を取得し、ロール属性のリストは、その特定のユーザーにどの権限が付与されているかを知るのに役立ちます。 \Du metacommandを使用した後に内部的に発生するクエリは、以下のクエリステートメントと多少似ています:

コード:

SELECT u.usename AS "Role name",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('Create DB, Superuser' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('Superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('Create DB' AS pg_catalog.text)
ELSE CAST('' AS pg_catalog.text) END AS "Attributes"
FROM pg_catalog.pg_user u ORDER BY 1;

3. Pg_shadow

の使用ユーザのリストを取得するもう1つの方法は、PostgreSQLサーバ内のユーザに関する情報も含まれているテーブルpg_shadowを使用することです。 この表は、8.1より前のバージョンのPostgreSQLとの下位互換性のために保持されています。 このテーブルには、ログインできるロールが格納され、pg_authidテーブルにrolcanloginに1としてフラグが立てられます。 Pg_userは、公開されているベーステーブルpg_shadowテーブル上に作成されたビューです。 pg_shadowはスーパーユーザーのみがアクセスできます。 pg_userビューには、セキュリティを維持するためにパスワードフィールドが空白になります。 Pg_shadowテーブルには、データベースサーバー内のすべてのユーザーのusername、usesysid、usecreatedb、usesuper、userepl、usebypassrls、passwd、valuntil、およびuseconfigフィールドが含まれています。

コード:

SELECT * FROM pg_shadow;

出力:

pg_shadow

pg_shadow

select usesysid as "Id of User", usename as "User Name",
usesuper as "Whether User Is SuperUser", passwd as "Md5 Encrypted Password", valuntil as "Expiry of Password"
from pg_shadow order by usename;

出力:

pg_shadow

Pg_shadow

結論

PostgreSQLデータベースサーバでは、pg_catalogスキーマに属するテーブルpg_userからレコードを取得するか、ユーザの情報を取得することができます。 もう1つの方法は、pg_userテーブル自体のクエリを内部的に起動するmeta-command\duを使用することです。 これ以外に、pg_shadowという名前のテーブルがもう1つあり、ユーザーに関する情報を格納し、さらにPostgreSQLデータベースサーバー内のすべてのユーザーを一覧表示するために使 これらすべてのメソッドのスコープはデータベースサーバー全体であることに注意してください。

推奨記事

これはPostgreSQLリストユーザーのためのガイドです。 ここでは、ユーザーデータ、ユーザー metaCommand、およびユーザー pg_shadowについて、実装する例について説明します。 また、その他の関連記事を参照して詳細を確認することもできます–

  1. PostgreSQLのフェッチ
  2. PostgreSQLの外部キー
  3. PostgreSQLテーブル
  4. PostgreSQLクエリ/はじめに|例
  5. PostgreSQL REGEXP_MATCHES()
  6. SQL正規表現のガイド
0 株式

コメントを残す

メールアドレスが公開されることはありません。

Previous post 熱帯ホームステーディング:淡水と肉のためにココナッツを収穫する方法
Next post Bio-aerial Locomotion2011