PostgreSQL のインストールと初期設定

PostgreSQLPostgreSQLBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、LabEx 仮想マシン (VM) 上に PostgreSQL をインストールし、初期設定を行います。目的は、PostgreSQL を起動して実行可能な状態にし、その基本機能を検証することです。

まず、パッケージリストを更新し、postgresql-contrib パッケージとともに PostgreSQL サーバーをインストールします。インストール後、pg_isready コマンドを使用して、PostgreSQL サービスが実行中で接続を受け付けていることを検証します。最後に、デフォルトのデータベースを調べ、サーバーの状態と基本設定を確認します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/db_setup("Create New Database") postgresql/PostgreSQLGroup -.-> postgresql/db_access("Connect To Database") postgresql/PostgreSQLGroup -.-> postgresql/db_status("Check Database Status") postgresql/PostgreSQLGroup -.-> postgresql/sys_version("Get Server Version") subgraph Lab Skills postgresql/db_setup -.-> lab-550900{{"PostgreSQL のインストールと初期設定"}} postgresql/db_access -.-> lab-550900{{"PostgreSQL のインストールと初期設定"}} postgresql/db_status -.-> lab-550900{{"PostgreSQL のインストールと初期設定"}} postgresql/sys_version -.-> lab-550900{{"PostgreSQL のインストールと初期設定"}} end

PostgreSQL のインストールとインストールの検証

このステップでは、LabEx 仮想マシン (VM) 上に PostgreSQL をインストールし、インストールが成功したことを検証します。PostgreSQL は強力なオープンソースのリレーショナルデータベース管理システム (RDBMS) です。

まず、アップグレードや新規インストールのためにパッケージリストを更新しましょう。LabEx VM でターミナルを開きます。ターミナルアイコンはデスクトップ上にあります。

次のコマンドを実行します。

sudo apt update

このコマンドは、利用可能なパッケージとそのバージョンのリストを更新しますが、パッケージのインストールやアップグレードは行いません。パッケージリストが更新されていることを示す出力が表示されるはずです。

次に、PostgreSQL サーバーと postgresql-contrib パッケージをインストールします。postgresql-contrib パッケージは、多くの場合役立つ追加のユーティリティと機能を提供します。

次のコマンドを実行します。

sudo apt install postgresql postgresql-contrib -y
postgresql-contrib

-y フラグは、インストールプロセス中のすべてのプロンプトに自動的に「はい」と回答します。このコマンドは、PostgreSQL とその関連パッケージをダウンロードしてインストールします。パッケージがダウンロードされてインストールされる間、たくさんの出力が表示されます。

インストールが完了したら、PostgreSQL が実行中であることを検証する必要があります。PostgreSQL はインストール後に自動的に起動するはずです。

PostgreSQL サービスの状態を確認するには、次のコマンドを実行します。

sudo service postgresql status

また、pg_isready コマンドを使用して、PostgreSQL サーバーが実行中で接続を受け付けているかどうかを確認することもできます。

次のコマンドを実行します。

pg_isready

PostgreSQL が実行中の場合、次のような出力が表示されるはずです。

/var/run/postgresql:5432 - accepting connections

PostgreSQL が実行されていない場合、次のようなエラーメッセージが表示されることがあります。

/var/run/postgresql:5432 - no response

「no response」エラーが発生した場合は、PostgreSQL サービスを再起動してみてください。次のコマンドを試すことができます。

sudo service postgresql restart

その後、pg_isready を再度実行して状態を確認します。

pg_isready

pg_isready が「accepting connections」を表示した場合、PostgreSQL が正常にインストールされて実行中であることが確認できます。

PostgreSQL シェル (psql) にアクセスする

このステップでは、PostgreSQL シェルである psql にアクセスします。psql は、PostgreSQL データベースとやり取りするためのコマンドラインツールです。psql を使用すると、SQL クエリを実行したり、データベースを管理したり、その他の管理タスクを実行したりすることができます。

デフォルトでは、PostgreSQL は PostgreSQL スーパーユーザーに対応する postgres という名前の Unix ユーザーを作成します。psql シェルにアクセスするには、postgres ユーザーに切り替えるか、sudo を使用して postgres ユーザーとしてコマンドを実行することができます。

まず、postgres ユーザーに切り替えましょう。次のコマンドを実行します。

sudo -i -u postgres

このコマンドは、現在のユーザーを postgres に切り替えます。プロンプトが新しいユーザーを反映するように変更されることに気づくでしょう。

これで postgres ユーザーとしてログインしたので、psql シェルにアクセスできます。次のコマンドを実行します。

psql

このコマンドは psql シェルを開きます。次のようなプロンプトが表示されるはずです。

postgres=#

これは、PostgreSQL サーバーに接続され、SQL コマンドを実行できることを示しています。

psql シェルを終了するには、\q と入力して Enter キーを押します。

postgres=## \q

これにより、postgres ユーザーのシェルに戻ります。

postgres ユーザーのシェルを終了し、元のユーザー (labex) に戻るには、exit と入力して Enter キーを押します。

exit

あるいは、sudo を使用して labex ユーザーとして直接 psql シェルにアクセスすることもできます。これにより、ユーザーを切り替える必要がなくなります。

psql

次のコマンドを実行します。

sudo -u postgres psql

このコマンドは、psql コマンドを postgres ユーザーとして実行します。直接 psql シェルに接続されます。

再び、psql シェルを終了するには、\q と入力して Enter キーを押します。

postgres=## \q

これにより、labex ユーザーのシェルに戻ります。

要するに、psql シェルにアクセスする 2 つの方法を学びました。postgres ユーザーに切り替える方法と sudo を使用する方法です。どちらの方法も同じ結果を得ることができますが、場合によっては sudo を使用する方が便利なことがあります。

デフォルトデータベースを探索する

このステップでは、PostgreSQL をインストールした際に作成されるデフォルトデータベースを探索します。これらのデータベースは、PostgreSQL サーバーに関する重要な機能と情報を提供します。

まず、postgres ユーザーとして psql シェルにアクセスします。次のコマンドを使用できます。

sudo -u postgres psql

psql シェルに入ったら、\l コマンドを使用して利用可能なデータベースを一覧表示できます。次のコマンドを実行します。

postgres=## \l

このコマンドは、データベースの一覧と、それらの所有者、エンコーディング、アクセス権限に関する情報を表示します。少なくとも 3 つのデータベースが表示されるはずです。

  • postgres:これは、最初に psql シェルにアクセスしたときに接続するデフォルトのデータベースです。多くの場合、管理タスクに使用されます。
  • template0:このデータベースは、新しいデータベースを作成するためのテンプレートとして使用されます。このデータベースを変更しないでください。
  • template1:これは、新しいデータベースを作成するために使用される別のテンプレートデータベースです。標準のテンプレートであり、カスタマイズすることができます。
psql-l

特定のデータベースに接続するには、\c コマンドの後にデータベース名を指定します。たとえば、postgres データベースに接続するには、次のコマンドを実行します。

postgres=## \c postgres

次のようなメッセージが表示され、postgres データベースに接続されたことが示されます。

You are now connected to database "postgres" as user "postgres".

これで postgres データベースに接続したので、その内容を探索できます。たとえば、\dt コマンドを使用してデータベース内のテーブルを一覧表示できます。

postgres=## \dt

このコマンドは、現在のデータベース内のテーブルの一覧を表示します。postgres データベースは主に管理タスクに使用されるため、ユーザー定義のテーブルが含まれていない場合があります。

また、\conninfo コマンドを使用して、現在のデータベース接続に関する情報を表示することもできます。

postgres=## \conninfo

このコマンドは、データベース名、ユーザー、ホスト、ポートなどの情報を表示します。

現在のデータベースから切断し、デフォルトの接続に戻るには、データベース名を指定せずに \c コマンドを使用できます。

postgres=## \c

これにより、通常は postgres データベースであるデフォルトのデータベースに再接続されます。

psql-c

最後に、\q と入力して Enter キーを押して psql シェルを終了します。

postgres=## \q

これにより、labex ユーザーのシェルに戻ります。

このステップでは、psql シェルを使用して、利用可能なデータベースを一覧表示し、特定のデータベースに接続し、その内容を探索する方法を学びました。

サーバーの状態と基本設定を確認する

このステップでは、PostgreSQL サーバーの状態を確認し、いくつかの基本的な設定を探索します。

前に述べたように、LabEx の仮想マシン (VM) は Docker コンテナ内で動作するため、systemctl コマンドが期待通りに機能しない場合があります。主に pg_isreadypsql を使用してサーバーの状態を確認します。

まず、PostgreSQL サーバーが実行中であることを再度確認しましょう。次のコマンドを実行します。

pg_isready

PostgreSQL が実行中の場合、次のような出力が表示されます。

/var/run/postgresql:5432 - accepting connections

次に、psql シェルを使用していくつかの基本的な設定を確認しましょう。postgres ユーザーとして psql シェルにアクセスします。

sudo -u postgres psql

psql シェルに入ったら、次の SQL クエリを使用して PostgreSQL のバージョンを確認できます。

SELECT version();

このクエリを psql シェルで実行します。次のような出力が表示されるはずです。

                                                                version
----------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)

これは、サーバーにインストールされている PostgreSQL のバージョンを示しています。

現在のデータベースユーザーも確認できます。

SELECT user;

出力は次のようになります。

  user
----------
 postgres
(1 row)

現在接続しているデータベース名を確認するには、次のコマンドを使用します。

SELECT current_database();

出力は次のようになります。

 current_database
------------------
 postgres
(1 row)

設定を表示するには、SHOW コマンドを使用できます。たとえば、サーバーが接続を待ち受ける IP アドレスを指定する listen_addresses 設定を確認するには、次のコマンドを実行します。

SHOW listen_addresses;

出力はおそらく次のようになります。

 listen_addresses
--------------------
 *
(1 row)

* は、サーバーがすべての利用可能な IP アドレスで接続を待ち受けていることを示しています。

もう 1 つ確認するのに便利な設定は、サーバーが接続を待ち受けるポート番号を指定する port です。

SHOW port;

出力は次のようになります。

 port
------
 5432
(1 row)

これは、サーバーが PostgreSQL のデフォルトポートである 5432 番ポートで接続を待ち受けていることを示しています。

psql-show

最後に、\q と入力して Enter キーを押して psql シェルを終了します。

postgres=## \q

これにより、labex ユーザーのシェルに戻ります。

このステップでは、pg_isreadypsql シェルを使用して、PostgreSQL サーバーの状態を確認し、いくつかの基本的な設定を探索する方法を学びました。

まとめ

この実験では、apt updateapt install postgresql postgresql-contrib -y を使用して、LabEx の仮想マシン (VM) に PostgreSQL リレーショナルデータベース管理システム (RDBMS) をインストールしました。-y フラグは、インストール中のプロンプトを自動的に承認するために使用されました。

インストール後、PostgreSQL サービスが実行中で接続を受け付けていることを確認しました。LabEx の VM が Docker コンテナ内で動作しているため、サーバーの状態を確認する際には systemctl status postgresql ではなく pg_isready コマンドを使用しました。サーバーが実行中の場合、pg_isready の期待される出力は /var/run/postgresql:5432 - accepting connections です。