PostgreSQL は、人気のあるクロスプラットフォームのオープンソース オブジェクト リレーショナル データベース システムの 1 つであり、強力なコミュニティを持つ堅牢で高性能、信頼性の高いシステムです。
このサービスは、カリフォルニア大学バークレー校の POSTGRES プロジェクトの一環として 1986 年に遡り、そのコア プラットフォームで 30 年間にわたって活発な開発が行われてきました。長年にわたる一貫したパフォーマンスにより、エンタープライズ用途におけるその完全性、アーキテクチャ、拡張性が証明されています。 ACID に準拠しており、人気のある PostGIS 地理空間データベース エクステンダーなどの強力なアドオンのサポートを提供します。
この記事では、一般的なプラットフォームへの PostgreSQL のインストールについて説明します。
それでは始めましょう。
Ubuntu
PostgreSQL は、Ubuntu のすべてのフレーバーとバージョンで利用できます。 Ubuntu のバージョンでデフォルトで利用可能で有効期間中サポートされているバージョンをインストールして使用するか、PostgreSQL リポジトリを追加してインストールして特定のバージョンを使用するかを選択できます。ここでは両方のオプションについて説明します。
Ubuntu のリポジトリによって提供されるデフォルトのサポートされているバージョンを使用するには、次を実行します。
$ sudo apt-get update
$ sudo apt-get -y install postgresql
PostgreSQL Apt リポジトリは、Ubuntu の現在の LTS バージョン、つまり
20.04
、
18.04
および
16.04
をサポートします。完全にはサポートされていない可能性がありますが、最も近い LTS バージョンを使用することで、同じパッケージが非 LTS バージョンでも動作します。
PostgreSQL apt リポジトリ を使用するには、次の手順に従います。
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get -y install postgresql
最新バージョンを参照する
postgresql
ではなく、PostgreSQL リポジトリから特定のバージョンをインストールするには、
postgresql-12
のように指定します。
$ sudo apt-get -y install postgresql-12
リポジトリには、サードパーティのアドオンを含むさまざまなパッケージも含まれています。たとえば、PostgreSQL バージョン 12 の一般的に入手可能なパッケージには次のものがあります。
postgresql-クライアント-12 | クライアント ライブラリとクライアント バイナリ |
---|---|
postgresql-12 | コアデータベースサーバー |
postgresql-contrib-9.x | 追加の提供モジュール (バージョン 10 以降の postgresql-xx パッケージの一部) |
libpq-dev | C言語フロントエンド開発用のライブラリとヘッダー |
postgresql-server-dev-12 | C言語バックエンド開発用のライブラリとヘッダー |
pgadmin4 | pgAdmin 4 グラフィカル管理ユーティリティ |
インストールが完了したら、以下のコマンドを使用して DB サービスのステータスを確認できます。
$ sudo systemctl status postgresql.service
Ubuntu の場合、インストール後にサービスが有効になり、次のように実行される必要があります。
$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2021-06-06 16:06:45 UTC; 46s ago
Main PID: 3364 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 1113)
Memory: 0B
CGroup: /system.slice/postgresql.service
Jun 06 16:06:45 ubuntu20cloud systemd[1]: Starting PostgreSQL RDBMS...
Jun 06 16:06:45 ubuntu20cloud systemd[1]: Finished PostgreSQL RDBMS.
$
CentOS
Ubuntu と同様、RHEL/CentOS リポジトリにも特定のバージョンの PostgreSQL が含まれており、これは OS の有効期間を通じてサポートされます。以下を使用して同じものをインストールできます。
$ sudo yum install -y postgresql-server
または、CentOS 8 を使用している場合は DNF を使用できます。
$ sudo dnf install -y postgresql-server
インストール後に以下のコマンドを実行して DB を初期化し、PostgreSQL サービスを有効にして開始します。
$ sudo postgresql-setup initdb
$ sudo systemctl enable postgresql.service
$ sudo systemctl start postgresql.service
または、 PostgreSQL yum リポジトリ からパッケージを直接使用するには、次のようにリポジトリを追加する必要があります。
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
次に、この記事の執筆時点での最新の安定リリースであるバージョン 13 などの特定のバージョンの PostgreSQL をインストールするには、次のコマンドを使用します。
$ sudo yum install -y postgresql13-server
yum リポジトリには、PostgreSQL の追加パッケージも含まれており、そのうちの重要なもののいくつかを以下に示します。
postgresql-クライアント | ライブラリとクライアントバイナリ |
---|---|
postgresqlサーバー | コアデータベースサーバー |
postgresql-contrib | 追加の付属モジュール |
postgresql-開発 | C言語開発用のライブラリとヘッダー |
インストール後に以下の手順を実行して DB を初期化し、PostgreSQL サービスを有効にして開始します。
$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
$ sudo systemctl enable postgresql-13
$ sudo systemctl start postgresql-13
以下のコマンドを使用して、DB サービスのステータスを確認できます。
$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2021-06-06 16:39:35 GMT; 1min 12s ago
Process: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
Process: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
CGroup: /system.slice/postgresql.service
├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
├─7015 postgres: logger process
├─7017 postgres: checkpointer process
├─7018 postgres: writer process
├─7019 postgres: wal writer process
├─7020 postgres: autovacuum launcher process
└─7021 postgres: stats collector process
Jun 06 16:39:34 centos7cloud systemd[1]: Starting PostgreSQL database server...
Jun 06 16:39:35 centos7cloud systemd[1]: Started PostgreSQL database server.
$
ウィンドウズ
Windows 32 ビットおよび 64 ビット インストーラーは、 こちらの PostgreSQL 公式サイトから入手できます。
- 必要なバージョンとアーキテクチャに基づいて、該当するバイナリをダウンロードできます。
- 利用可能な最新バージョン (Windows 64 ビット プラットフォーム用の v13.3) をダウンロードします。ダウンロードが完了したら、インストーラーをダブルクリックして起動します。
- 「次へ」をクリックして続行します。
- [次へ] をクリックしてデフォルトのパスを続行するか、カスタム インストール パスを指定します。
- デフォルトのコンポーネントを選択したままにし、「次へ」をクリックして続行することができます。
- 次に、データ ディレクトリの場所を尋ねます。別の専用ディスクまたはディレクトリを割り当てない限り、これをデフォルトのままにすることができます。 「次へ」をクリックして続行します。
-
postgres
ユーザーに割り当てられる強力なパスワードを指定します。完了したら、「次へ」をクリックします。
-
ほとんどの場合、デフォルトのポート
5432
が適切です。 「次へ」をクリックして次のページに進みます。
- DB のロケールを選択し、「次へ」をクリックして続行します。
- インストール ウィザードで選択したすべての設定が一覧表示され、確認してください。変更する必要がある場合は、戻って同じ内容を変更するか、「次へ」をクリックして次のページに進みます。
- セットアップには、インストールを続行する準備ができていることが表示されます。準備ができたら、「次へ」をクリックしてインストールを開始します。
- インストールが完了するまで待ちます。同様の確認が表示されます。
-
完了したら、
Stack Builder
チェックを外し、[完了] をクリックしてインストール ウィザードを終了します。 [スタート] メニューをクリックし、SQL Shell (psql)
を検索し、そのアイコンをクリックしてpsql
シェルを開きます。
-
SQL Shell (psql) opens up where you can interact with your <a href="https://.com/postgresql-monitoring-tools/">PostgreSQL instance after specifying the connection details</a>. All of the items can be selected as the default by simply pressing <code>Enter
パスワードを除くSQL Shell (psql) opens up where you can interact with your <a href="https://.com/postgresql-monitoring-tools/">PostgreSQL instance after specifying the connection details</a>. All of the items can be selected as the default by simply pressing <code>Enter
。パスワードの場合は、インストール ウィザード中にpostgres
ユーザーに指定されたパスワードを入力する必要があります。これにより、postgres=#
プロンプトが表示されます。
PostgreSQLに接続する
postgres
ユーザーはインストール後に自動的に作成され、DB インスタンスへの
superadmin
アクセス権を持ちます。 Linux では、特権ユーザーとして、次のようにこのアカウントに切り替えることができます。
$ sudo su - postgres
ログインしたら、
postgres
ユーザーのパスワードを次のようにリセットできます。
$ psql -c "alter user postgres with password 'P@SsW0rdH3r3'"
次に、
psql
を使用して PostgreSQL プロンプトを次のように起動します。
$ psql
これにより、PostgreSQL プロンプトが表示されます。
$ psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
このプロンプトで、データベースと対話し、DB 管理タスクまたはユーザー タスクを実行できます。デモとして、以下の手順では DB とユーザーを作成し、新しいデータベースで作業するための権限を新しいユーザーに割り当てます。
postgres=# CREATE DATABASE db;
CREATE DATABASE
postgres=# CREATE USER geekuser WITH ENCRYPTED PASSWORD 'N3wP@33w0rD';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE db to geekuser;
GRANT
postgres=#
次に、
\l
コマンドを使用して DB を一覧表示します。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+---------+---------+-----------------------
db | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | geekuser=CTc/postgres
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
postgres=#
これで、以下を使用して単純に DB に接続できるようになります。
postgres=# \c db
You are now connected to database "db" as user "postgres".
db=#
まとめ
PostgreSQL は、その堅牢性、機能セット、拡張性により、企業の世界で広く採用されているデータベースの 1 つです。習得が簡単で、SQL 標準との互換性を目指しています。
PostgreSQL の チュートリアルが 公式サイトにあります。