PostgreSQLでユーザーをリストする方法
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
psql
で\du
または\du+
を使用して、PostgreSQLのユーザーとロールを一覧表示します。pg_user
に対するSQLクエリは、カスタマイズ可能なユーザー詳細レポートを提供します。- 現在のユーザーとスーパーユーザーを表示することで、アクセスと権限を監視できます。
ユーザーアカウントの管理は、PostgreSQL管理の基本的な側面です。アクセスを監査したり、ロールを割り当てたり、セキュリティコンプライアンスを確保したりする場合でも、ユーザーとその属性を一覧表示する方法を知っておくことは不可欠です。このガイドでは、PostgreSQLでユーザー情報を取得するための2つの主要な方法、つまりpsql
コマンドラインインターフェイスの使用とSQLクエリの実行について概説します。
1. psql
コマンドラインインターフェイスを使用したユーザーの一覧表示
psql
ツールは、PostgreSQLサーバーと対話するための組み込みメタコマンドを提供します。
ステップ1:PostgreSQLサーバーへの接続
ターミナルを開き、psql
コマンドを使用してPostgreSQLサーバーに接続します。
psql -U postgres
異なるユーザー名を使用している場合は、postgres
を自分のユーザー名に置き換えてください。パスワードの入力を求められます。
ステップ2:すべてのユーザーを一覧表示
接続したら、\du
コマンドを使用して、現在のPostgreSQLデータベースクラスター内のすべてのユーザーアカウント(ロール)を表示します。
\du
このコマンドは、次の列を含むテーブルを表示します。
- ロール名: ユーザーまたはロールの名前。
- 属性:
Superuser
、Create role
、Create DB
などのロール属性。 - メンバー: ユーザーがメンバーになっているロールを一覧表示します。
説明などの詳細情報については、\du+
コマンドを使用します。
\du+
2. SQLクエリを使用したユーザーの一覧表示
または、システムカタログをクエリしてユーザー情報を取得することもできます。
pg_user
ビューのクエリ
pg_user
ビューは、データベースユーザーに関する情報を提供します。次のSQLステートメントを実行します。
SELECT usename AS role_name, CASE WHEN usesuper AND usecreatedb THEN CAST('スーパーユーザー、データベース作成' AS pg_catalog.text) WHEN usesuper THEN CAST('スーパーユーザー' AS pg_catalog.text) WHEN usecreatedb THEN CAST('データベース作成' AS pg_catalog.text) ELSE CAST('' AS pg_catalog.text) END role_attributes FROM pg_catalog.pg_user ORDER BY role_name DESC;
このクエリは以下を返します。
- role_name: ユーザーの名前。
- role_attributes: ユーザーの権限のテキスト表現。
追加のヒント
-
現在のユーザーの表示: 現在接続されているユーザーを識別するには、次を実行します。
SELECT current_user;
または
SELECT session_user;
-
スーパーユーザーの一覧表示: すべてのスーパーユーザーを一覧表示するには、次を実行します。
SELECT usename FROM pg_catalog.pg_user WHERE usesuper = true;
-
アクティブな接続の確認: 現在アクティブなユーザーとそのセッションを表示するには、次を実行します。
SELECT * FROM pg_catalog.pg_stat_activity WHERE state = 'active';
概要
psql
で\du
または\du+
を使用して、すべてのユーザーとその属性を一覧表示します。- 詳細なユーザー情報については、
pg_catalog.pg_user
に対してSQLクエリを実行します。 - 追加のクエリを利用して、現在のユーザーとアクティブな接続を監視します。
これらの方法を使用することで、データベース管理者はユーザーアカウントを効果的に管理し、PostgreSQLのセキュリティと整合性を維持できます。
FAQs
psql
ターミナルで\du
または\du+
コマンドを使用します。
はい、pg_catalog.pg_user
をクエリして、ユーザー名とそのロール属性を確認します。
SQLでSELECT current_user;
またはSELECT session_user;
を実行します。
Leapcellは、バックエンドプロジェクトをホストするための最適な選択肢です。
Leapcellは、Webホスティング、非同期タスク、およびRedisのための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に応じてのみ支払い - リクエストも料金もありません。
比類のない費用対効果
- アイドル料金なしの従量課金制。
- 例:25ドルで平均応答時間60ミリ秒で694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察のためのリアルタイムメトリクスとロギング。
簡単な拡張性と高いパフォーマンス
-
高い同時実行を簡単に処理するための自動スケーリング。
-
運用オーバーヘッドゼロ - 構築に集中するだけです。
詳細については、ドキュメントをご覧ください。
Xでフォローしてください:@LeapcellHQ