ホームページ > バックエンド開発 > Python チュートリアル > スーパーユーザー アクセスを必要とせずに PostgreSQL でデータベースを作成し、常にデータベースに接続する方法

スーパーユーザー アクセスを必要とせずに PostgreSQL でデータベースを作成し、常にデータベースに接続する方法

Mary-Kate Olsen
リリース: 2024-12-27 04:48:20
オリジナル
709 人が閲覧しました

How to Create a Database and Always Connect to It in PostgreSQL Without Needing Superuser Access

このガイドでは、非スーパーユーザーとして PostgreSQL にデータベースを作成し、必要な権限を割り当て、確実にデータベースを作成する手順を説明します。スーパーユーザーとしてログインする必要なく、新しく作成したデータベースに常に接続できます。

これは、あらゆるアクションに対して管理者権限を必要とせずに、PostgreSQL で独自のデータベースを管理したい開発者やユーザーにとって便利です。

私たちが達成すること:

1.新しいデータベースを作成します (tortoise-demo)。
2.データベースを作成してアクセスするための権限を非スーパーユーザー ロール (testuser) に付与します。
3.データベース (tortoise-demo) にシームレスに切り替えます。最初にスーパーユーザーに切り替える必要はありません。
4.testuser としてログインするときに常に tortoise-demo に自動的に接続するように PostgreSQL を構成します。

ステップ 1: 必要な権限を testuser に付与する

非スーパーユーザーとしてデータベースを作成する前に、自分の役割 (この場合は testuser) にデータベースを作成するための適切な権限があることを確認する必要があります。

CREATEDB 権限の付与

デフォルトでは、新しく作成された PostgreSQL ロールにはデータベースを作成する権限がありません。 スーパーユーザー (postgres など) としてログインしている場合は、testuser ロールに必要な権限を付与できます。

1.スーパーユーザーとしてログインします (例: postgres):

   psql -U postgres
ログイン後にコピー
ログイン後にコピー

2.CREATEDB 権限を testuser に付与します:

次の SQL クエリを実行して、testuser が新しいデータベースを作成できるようにします:

   GRANT CREATEDB TO "testuser";
ログイン後にコピー
ログイン後にコピー

これにより、testuser はスーパーユーザー権限を必要とせずにデータベースを作成できるようになります。

3.スーパーユーザーセッションを終了します:

   \q
ログイン後にコピー
ログイン後にコピー

ステップ 2: testuser としてログインし、データベースを作成する

testuser ロールに CREATEDB 権限が与えられたので、testuser としてログインして新しいデータベースを作成できます。

testuser としてログインします。

testuser ロールとしてログインするには、次のコマンドを実行します:

psql -U "testuser" -d postgres -W
ログイン後にコピー
ログイン後にコピー
  • -U "testuser" オプションはユーザーを指定します。
  • -d postgres オプションは、postgres データベース (デフォルトの管理データベース) に接続します。
  • -W オプションを使用すると、testuser に設定したパスワードの入力を求められます (例: 1234567890)。

tortoise-demo データベースを作成します。

ログインしたら、新しいデータベース tortoise-demo を作成します:

CREATE DATABASE "tortoise-demo";
ログイン後にコピー
ログイン後にコピー

このコマンドは、tortoise-demo という新しいデータベースを作成します。

所有権の設定 (オプション):

testuser がデータベースを完全に制御できるようにするには、データベースの所有権を testuser に割り当てることができます。

   psql -U postgres
ログイン後にコピー
ログイン後にコピー

このステップはオプションですが、これにより testuser ロールが tortoise-demo データベースに対する完全な管理制御を持つことが保証されます。

ステップ 3: tortoise-demo データベースに切り替える

データベースを作成した後、新しく作成したデータベース (tortoise-demo) に切り替えて、作業を開始することもできます。

tortoise-demo に接続するには、次のコマンドを実行します。

   GRANT CREATEDB TO "testuser";
ログイン後にコピー
ログイン後にコピー

c コマンドは、現在のセッションを tortoise-demo データベースに切り替えます。この時点から、SQL クエリを実行してデータベースを管理できるようになります。

ステップ 4: 毎回切り替える必要なく tortoise-demo への接続を自動化する

tortoise-demo データベースの作成と切り替えが正常に完了したので、次のステップは このプロセスを自動化することです。具体的には、folasayoolayemi としてログインするたびに、明示的に切り替える必要がなく、自動的に tortoise-demo データベースに接続されるように PostgreSQL を構成したいと考えています。

オプション 1: PGDATABASE 環境変数を設定する

tortoise-demo データベースに常に接続できるようにする簡単な方法の 1 つは、PGDATABASE 環境変数を設定することです。この変数は、接続時にデフォルトでどのデータベースを使用するかを PostgreSQL に指示します。

1.現在のセッションの PGDATABASE を設定します:

現在のターミナルセッションで次のように環境変数を設定できます:

   \q
ログイン後にコピー
ログイン後にコピー

これにより、その後実行する psql コマンドはデフォルトで自動的に tortoise-demo に接続されます。

2.変更を永続的にする:

この変更をターミナル セッション間で永続的にするには、export コマンドをシェルの構成ファイル (.bashrc、.zshrc など) に追加します。

たとえば、bash を使用している場合は、~/.bashrc ファイルに次の行を追加します。

psql -U "testuser" -d postgres -W
ログイン後にコピー
ログイン後にコピー

次に、次を実行します:

CREATE DATABASE "tortoise-demo";
ログイン後にコピー
ログイン後にコピー

これにより、新しいターミナル セッションを開くたびに、データベースを指定することなく PostgreSQL が自動的に tortoise-demo に接続するようになります。

オプション 2: 接続コマンドで常にデータベースを指定する

PGDATABASE 環境変数を使用したくない場合は、psql 接続コマンドでいつでもデータベース名を指定できます。

ALTER DATABASE "tortoise-demo" OWNER TO "testuser";
ログイン後にコピー

この方法では、接続するたびに tortoise-demo データベースを直接指定するため、構成を変更する必要がなくなります。

主な手順:

1.CREATEDB 権限を付与: testuser ロールにデータベースを作成するために必要な権限があることを確認します。
2.データベースの作成: testuser としてログインし、tortoise-demo データベースを作成します。
3.データベースに切り替えます: c コマンドを使用して tortoise-demo.
に切り替えます。 4.データベース接続の自動化: デフォルトで常に tortoise-demo に接続するように PGDATABASE 環境変数を設定するか、psql コマンドでデータベース名を明示的に指定します。

結論:

これらの手順に従うことで、新しいデータベースを作成する必要があるたびにスーパーユーザー権限を必要とせずに、非スーパーユーザーとして PostgreSQL で独自のデータベースを作成および管理できます。特定のデータベースに自動的に接続する機能により、特に特定のプロジェクトやアプリケーションを扱う開発者にとって、ワークフローがより効率的になります。

読んでいただきありがとうございます...
コーディングを楽しんでください!

以上がスーパーユーザー アクセスを必要とせずに PostgreSQL でデータベースを作成し、常にデータベースに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート