📒

Ubuntu(さくらVPS)に PostgreSQL をインストールし外部から接続する

2023/03/07に公開

さくらVPSの Ubuntu に PostgreSQL をインストールし、外部からデータベースに接続するまでの手順をシェアします。

Ubuntu のバージョン確認

バージョンは、20.04です。以下、コマンドで確認できます。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

PostgreSQLをインストール

サーバにSSHでログインし、以下を実行します。

sudo apt-get update
sudo apt-get install postgresql

最初のコマンドは、パッケージリストを更新し、2番目のコマンドで、PostgreSQLをインストールします。インストールが完了すると、PostgreSQLサーバーが自動的に起動されます。

インストールできたかの確認

PostgreSQLがインストールされている場合には、関連するパッケージの一覧を表示します。

dpkg -l | grep postgresql

PostgreSQLの起動確認

PostgreSQLのサービスが起動しているかどうかを確認するには、次のコマンドを実行します。

systemctl status postgresql.service

PostgreSQLが起動している場合は、 Active: active (exited) と表示されます。

PostgreSQLのバージョンを確認

以下コマンドで、インストールされているPostgreSQLのバージョン情報が表示されます。

sudo -u postgres psql -c "SELECT version();"

PostgreSQLにログイン

PostgreSQLのデフォルトロールである"postgres"に切り替わり、ログインします。

sudo -u postgres psql

ログアウトする場合

\q

データベース作成

PostgreSQLにログインした状態で、以下コマンド実行でデータベースを作成します。

CREATE DATABASE <データベース名>;

作成したデータベースの確認

\l

次のように表示されます。

List of databases
      Name       |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------+----------+----------+-------------+-------------+-----------------------
 作成したDB名        | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 postgres        | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0       | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres
 template1       | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                 |          |          |             |             | postgres=CTc/postgres

テーブル作成

以下コマンドでテーブルが作成されます。

CREATE TABLE <テーブル名> (
    <列1名> <データ型> <オプション>,
    <列2名> <データ型> <オプション>,
    ...
);

PostgreSQL に外部ネットワークからアクセスするための設定

サーバにSSHログインし、PostgreSQLの設定ファイルを編集します。

sudo vi /etc/postgresql/<PostgreSQLバージョン>/main/postgresql.conf

以下の通り変更し、すべてのIPアドレスからの接続を受け付けるように変更します。

# 変更前
#listen_addresses = 'localhost'

# 変更後
listen_addresses = '*'

次に pg_hba.conf ファイルを編集します。

sudo vi /etc/postgresql/<PostgreSQLバージョン>/main/pg_hba.conf

全ての外部IPアドレスを許可する場合、以下の行を追加します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5

接続許可するポート番号を変更するには、次のファイルを編集します。

sudo vi /etc/postgresql/{バージョン番号}/main/postgresql.conf

以下の行を変更します。

# 変更前
#port = 5432

# 変更後  (port 5433 に変更されます)
port = 5433

PostgreSQLを再起動し、設定変更を反映させます。

sudo service postgresql restart

外部からPostgreSQL接続を確認

サーバからログアウトし、以下のコマンドでPostgreSQLにログインできることを確認します。

psql \
   --host=<DBのIPアドレス> \
   --port=<port番号> \
   --username=<username> \
   --password \
   --dbname=<database name>

以上で、Ubuntu(さくらVPS)に PostgreSQL をインストールし外部から接続するまでが可能になりました。

参考になりましたらうれしいです。

Discussion