Ubuntu / PostgreSQL

ここでは、Ubuntu 24.04を例に、PostgreSQL(オープンソースのリレーショナルデータベース管理システム)をインストールして、簡単な初期設定を行う流れをやさしくかつ詳しく解説します。

大まかな流れとサンプルについては、以下のページを参考にしています。

How to Install PostgreSQL on Ubuntu 24.04 | Vultr Docs


1. 事前準備

(1) Ubuntuサーバーへのログイン

  • まずは、SSHなどを利用してUbuntu 24.04サーバーに接続します。
  • rootユーザーを直接使うのではなく、sudo権限を持つ非rootユーザーで作業するのがおすすめです。
  • WSL を使っている場合は、サーバーログインの必要はありません。

(2) システムの更新

インストール前に、サーバー内のパッケージを最新の状態にしておきましょう。

sudo apt update
sudo apt upgrade -y


2. PostgreSQLのインストール

(1) postgresql-common のインストール

Ubuntuには、PostgreSQLインストール用のスクリプトや設定がまとめられたpostgresql-commonというパッケージがあります。これをまず入れます。

sudo apt install -y postgresql-common

(2) PostgreSQL専用APTリポジトリの有効化

postgresql-commonパッケージに含まれているスクリプトを実行すると、PostgreSQLの公式APTリポジトリを自動で追加できます。

sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

  • プロンプトが表示されたら、Enterを押して進めてください。
  • このスクリプトによって、Ubuntu 24.04向けのリポジトリが追加され、より新しいバージョンのPostgreSQLをインストールできるようになります。

(3) PostgreSQL本体のインストール

公式リポジトリが有効になったら、postgresqlパッケージをインストールします。

sudo apt install -y postgresql

(4) PostgreSQLの起動と動作確認

インストールが完了すると、自動的にPostgreSQLサービスが登録されます。念のため再起動して、ステータスを確認します。

sudo systemctl restart postgresql
sudo systemctl status postgresql

  • Active: active (exited) と表示されていれば、正常に起動されています。

3. PostgreSQLの基本的なセキュリティ設定

PostgreSQLには、デフォルトでpostgresという管理ユーザー(スーパーユーザー)が作成されます。
ここでは、このpostgresユーザーにパスワードを設定し、また新しいユーザーを作成して認証方式を変更する方法を紹介します。

(1) postgresユーザーでログイン

PostgreSQLにログインするには、まずOS上でpostgresアカウントに切り替えてpsqlコマンドを実行するのが基本的な方法です。

sudo -u postgres psql

  • このコマンドを打つと、psqlというPostgreSQLの対話型コンソール画面に入ります。
  • 画面上では、postgres=#のような表示になったら成功です。

(2) postgresユーザーのパスワード設定

psqlコンソール上で以下のコマンドを入力し、パスワードを強固なものに設定します。

ALTER USER postgres WITH ENCRYPTED PASSWORD 'strong_password';

strong_password は実際には英数字・記号を組み合わせた推測されにくいパスワードを指定してください。

(3) 新しいユーザーの作成

アプリケーションごとにユーザーを分けて管理するのが望ましいので、例として db_manager という新しいユーザーを作り、パスワードを設定します。

CREATE USER db_manager ENCRYPTED PASSWORD 'strong_password';

(4) psql コンソールの終了

これでユーザー設定は完了ですので、psqlを終了します。Ctrl-d もしくは \q を入力します。

(5) 認証方式の変更

Ubuntuで初期インストールされたPostgreSQLでは、ローカル接続に対して「peer認証」が使われる設定になっていることが多いです。これを「パスワード認証」に変更すると、PostgreSQL利用時にIDとパスワードを求められるようになり、より安全になります。

  1. pg_hba.confファイルの編集
    /etc/postgresql/バージョン番号/main/pg_hba.conf を書き換えたいのですが、ここでは一括置換の例を示します。 sudo sed -i '/^local/s/peer/scram-sha-256/' /etc/postgresql/17/main/pg_hba.conf
    • バージョン番号(17の部分)は、インストールしたPostgreSQLのバージョンによって変わる可能性があります。/etc/postgresql/配下を確認してください。
    • peerscram-sha-256 というパスワード認証方式に置き換えられます。
  2. PostgreSQLの再起動 sudo systemctl restart postgresql 以上でパスワード認証が有効になりました。

4. PostgreSQLデータベースへのアクセス

(1) psqlコマンドでのログイン

先ほど作成した db_manager ユーザーでログインテストをしてみます。

sudo -u postgres psql -U db_manager -d postgres

  • -d postgres は、デフォルトで用意されている postgres データベースに接続したい場合の例です。
  • パスワードを聞かれたら、先ほど設定したパスワードを入力してください。

(2) データベースの新規作成

実際に新しいデータベースを作ってみましょう。
ここでは、アプリケーション用に hospital というデータベースを作る例を示します。

sudo -u postgres createdb hospital -O db_manager

  • -O db_manager は、このデータベースのオーナーを db_manager ユーザーに設定するオプションです。

(3) 作成したデータベースへアクセス

sudo -u postgres psql -U db_manager -d hospital

  • hospital データベースに db_manager ユーザーで接続します。

5. 簡単なテーブル作成とデータ操作

psqlコンソールに入った状態で、実際にテーブルを作ってデータを登録してみます。

(1) doctorsテーブルの作成

CREATE TABLE doctors (
  doctor_id SERIAL PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  appointment_date DATE
);

  • doctor_id SERIAL PRIMARY KEY は、自動的に連番を振る列を定義します。

(2) サンプルデータの追加

INSERT INTO doctors (first_name, last_name, appointment_date)
VALUES
('Ben', 'Joe', '2024-11-15'),
('Carson', 'Smith', '2024-02-28'),
('Donald', 'James', '2024-04-10');

(3) データの確認

SELECT * FROM doctors;

  • 入力したデータが表示されれば成功です。

(4) psqlコンソールの終了

作業が終わったら \q で終了できます。


6. まとめと公式ドキュメント参照

このガイドでは、

  1. サーバーの更新
  2. PostgreSQLリポジトリの追加とインストール
  3. パスワード認証の設定とユーザー作成
  4. データベースとテーブルの作成、およびデータ操作

という流れで、Ubuntu 24.04におけるPostgreSQLの導入と基本操作を解説しました。
さらに詳しい設定や運用方法については、PostgreSQL公式ドキュメントを参照してください。公式ドキュメントには、バックアップとリストア、レプリケーション、性能チューニングなどの高度な情報も網羅されています。


よくある質問

Q. パスワード認証を設定したのにログイン時にパスワードを聞かれないのですが?
A. pg_hba.confの設定がうまく反映されていない可能性があります。行の頭にあるlocalhostの行を見直し、scram-sha-256などの記述が正しく適用されているか確認してみてください。設定変更後はpostgresqlの再起動をお忘れなく。

Q. psqlコマンドが見つからないと言われました。
A. postgresqlパッケージをインストールすると自動的に入るはずですが、パスが通っていない場合があります。which psqlコマンドでインストール先を確認してみてください。通常は/usr/bin/psqlに存在します。


上記の手順を順番に実施していけば、初心者の方でもスムーズにPostgreSQLをインストールして利用を始められます。ぜひ試してみてください。

参考ページ

How to Install PostgreSQL on Ubuntu 24.04 | Vultr Docs