はじめに
データベースを管理するには、特にユーザーアカウントが不要になった場合は、ユーザーアカウントを削除する必要があります。不要なPostgresユーザーを削除することは、データベースのセキュリティ対策として不可欠です。このアクションにより、ハッカーが気付かない可能性のあるアクセスポイントも削除されます。
このチュートリアルでは、Postgresユーザーを複数の方法で削除する方法について説明します。
前提条件
- sudo権限を持つコマンドラインまたはターミナルへのアクセス。
- Postgresがインストールされています。できれば最新バージョンです。
- Postgresユーザーを削除します。チュートリアルに従って、テスト目的でPostgresユーザーを作成します。
Postgresユーザーを削除する
PostgreSQLのユーザーには、デフォルトでログイン権限があります。ユーザーを削除するには2つの方法があり、どちらも CREATEROLE
にアクセスする必要があります 権利。スーパーユーザーを削除するには、 SUPERUSER
特権は必須です。
postgres インストール中に作成されたユーザーには、デフォルトで必要なすべての権限があります。以下の例では、 postgresを使用しています。 PostgreSQLに接続するユーザー。
方法1:dropuserユーティリティを使用してPostgresユーザーを削除する
Postgresは、PSQLコマンドラインインターフェイスに接続せずにユーザーを削除するためのクライアントユーティリティを提供します。
dropuser
を使用してPostgresのユーザーを削除するには 、ターミナルで次のコマンドを実行します:
sudo -u postgres dropuser <user> -e
または、コマンドを2つのステップに分割します。
1. postgresに切り替えます ユーザー(または適切な権限を持つ別のユーザー):
sudo su - postgres
2. dropuserコマンドを実行します:
dropuser <name> -e
どちらの場合も、Postgresはユーザーを削除します。
方法2:DROPUSERステートメントを使用してPostgresユーザーを削除する
Postgresデータベースからユーザーを削除するもう1つの方法は、PSQLステートメントを使用することです。
ユーザーを削除するには、次の手順に従います。
1.次のコマンドを使用して、ターミナル経由でPSQLクライアントに接続します。
sudo -u postgres psql
ターミナルがPSQLコンソールに変わります( postgres=#
。
2.すべてのユーザーと役割を次のように一覧表示します:
\du
削除するユーザーを見つけて、次の手順でその名前を使用します。
3.次のクエリを実行して、ユーザーを削除します。
DROP USER <name>;
または、ドロップする前にユーザーが存在するかどうかを確認するには、次のように入力します。
DROP USER IF EXISTS <name>;
クライアントは、役割が存在しない場合に通知します。
4.ユーザーリストをもう一度表示して、ユーザーがいなくなったことを確認します。
\du
ユーザーはロールのリストに含まれなくなります。この出力は、削除が成功したことを示します。
複数のPostgresユーザーを削除する
PSQLクライアントでは、一度に複数のPostgresユーザーを削除できます。以下の手順では、PostgreSQLクライアントに接続して複数のユーザーを削除する方法について説明します。
1.次のコマンドでPSQLクライアントに接続します:
sudo -u postgres psql
2.すべてのユーザーを次のように一覧表示します:
\du
削除するユーザーを見つけて、次の手順で名前を使用します。
3.個々のユーザーをコンマで区切って、複数のPostgresユーザーを削除します。
DROP USER [IF EXISTS] <name>, <name>, ... <name>;
このコマンドは、一度に複数の役割を削除します。 IF EXISTS
を追加します 利用できないユーザーをスキップします。
4.ユーザーリストを再確認して、すべての役割が削除されていることを確認します。
\du
削除されたユーザーはリストに含まれなくなります。
依存関係のあるPostgresユーザーを削除する
依存関係のあるPostgresユーザーを削除しようとすると失敗し、エラーが表示されます。
ユーザーを安全に削除するには、次の手順を実行します。
1.エラーの詳細から別のユーザーにオブジェクトの所有権を割り当てます。たとえば、 myuserが所有するオブジェクトを転送するには postgres 、実行:
REASSIGN OWNED BY myuser TO postgres;
クエリにより、オブジェクトの所有権が postgresに変更されます ユーザー。
2.次のコマンドを使用して、ユーザーへのデータベースオブジェクト接続を削除します。
DROP OWNED BY myuser;
この手順では、ユーザーがオブジェクトに対して持っている特権もすべて削除されます。
3.現時点では、ユーザーには依存関係がありません。ユーザーを削除するには、次のコマンドを実行します:
DROP USER myuser;
依存関係が存在しないため、削除は成功します。
Postgresの役割を削除する
Postgresの役割を削除するには、PSQLクライアントで次のコマンドを実行します。
DROP ROLE [IF EXISTS] <name>;
DROP USER
ステートメントはDROP ROLE
のエイリアスです 。 Postgresユーザーは、 LOGIN
を持つロールです。 権限。したがって、両方の DROP USER
およびDROP ROLE
互換性があり、ユーザーと役割の両方で機能します。