HOME > 技術ドキュメント > PostgreSQL インストール・初期設定(Ubuntu 24.04)
PostgreSQL インストール・初期設定(Ubuntu 24.04 LTS)
PostgreSQL は高機能・高信頼性のオープンソース RDB(リレーショナルデータベース)です。
Go 言語・PHP・Java など主要な言語から利用でき、JSON 型・全文検索・パーティションなど豊富な機能を持ちます。
この記事では Ubuntu 24.04 LTS へのインストールから Web アプリケーションからの接続まで解説します。
1. インストール
Ubuntu 24.04 のリポジトリには PostgreSQL 16 が含まれています。
sudo apt update sudo apt install -y postgresql postgresql-contrib # バージョン確認 psql --version # psql (PostgreSQL) 16.x
インストール後、PostgreSQL サービスは自動的に起動します。
# サービス状態確認 sudo systemctl status postgresql # OS 起動時に自動起動(通常はデフォルトで有効) sudo systemctl enable postgresql
2. postgres ユーザーで接続
PostgreSQL はインストール時に OS ユーザー postgres とデータベース管理者 postgres が作成されます。
初回の接続はこのユーザーで行います。
# postgres OS ユーザーに切り替えて psql を起動 sudo -u postgres psql # psql プロンプトが表示される # postgres=#
3. データベースユーザーの作成
アプリケーション用のデータベースユーザーを作成します。postgres=# プロンプトで実行してください。
-- アプリ用ユーザーを作成(パスワードを設定) CREATE USER appuser WITH PASSWORD '強いパスワードをここに'; -- ユーザー一覧を確認 \du
OS コマンドでも作成できます:
sudo -u postgres createuser --pwprompt appuser
4. データベースの作成
-- psql 内で実行(postgres ユーザーで接続中) CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8' LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8' TEMPLATE template0; -- 日本語ロケールが不要な場合(シンプル) CREATE DATABASE appdb OWNER appuser; -- データベース一覧を確認 \l
OS コマンドでも作成できます:
sudo -u postgres createdb -O appuser appdb
5. 接続権限の設定(pg_hba.conf)
/etc/postgresql/16/main/pg_hba.conf がクライアント認証の設定ファイルです。
デフォルトではローカル接続は peer 認証(OS ユーザーと同名のみ接続可)になっています。
sudo nano /etc/postgresql/16/main/pg_hba.conf
アプリユーザーがパスワードで接続できるよう行を追加します:
# pg_hba.conf に追記(既存行の上に追加する) # TYPE DATABASE USER ADDRESS METHOD local appdb appuser scram-sha-256 host appdb appuser 127.0.0.1/32 scram-sha-256
設定を反映します:
sudo systemctl reload postgresql
6. psql で接続確認
# appuser でデータベース appdb に接続 psql -U appuser -d appdb -h 127.0.0.1 # パスワードを入力して接続できれば成功 # appdb=>
7. テーブルの作成と基本操作
-- テーブル作成
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- データ挿入
INSERT INTO users (name, email) VALUES ('山田太郎', 'yamada@example.com');
-- データ取得
SELECT * FROM users;
-- テーブル一覧
\dt
8. Go 言語からの接続(pgx)
Go から PostgreSQL に接続する場合は pgx ドライバが推奨されています。
go get github.com/jackc/pgx/v5
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/jackc/pgx/v5"
)
func main() {
dsn := os.Getenv("DATABASE_URL")
// 例: postgres://appuser:password@127.0.0.1:5432/appdb
conn, err := pgx.Connect(context.Background(), dsn)
if err != nil {
log.Fatal("DB接続失敗:", err)
}
defer conn.Close(context.Background())
var name string
err = conn.QueryRow(context.Background(),
"SELECT name FROM users WHERE id = $1", 1).Scan(&name)
if err != nil {
log.Fatal("クエリ失敗:", err)
}
fmt.Println("名前:", name)
}
接続文字列(DSN)は環境変数で管理するのがベストプラクティスです。 パスワードをソースコードに直接書かないようにしてください。
# 環境変数で設定する export DATABASE_URL="postgres://appuser:password@127.0.0.1:5432/appdb"
9. PHP からの接続(PDO)
sudo apt install -y php-pgsql
<?php
$dsn = 'pgsql:host=127.0.0.1;port=5432;dbname=appdb';
$pdo = new PDO($dsn, 'appuser', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');
$stmt->execute([':id' => 1]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['name'];
10. 主な設定ファイルの場所
/etc/postgresql/16/main/postgresql.conf |
メイン設定(メモリ、接続数など) |
/etc/postgresql/16/main/pg_hba.conf |
クライアント認証設定 |
/var/lib/postgresql/16/main/ |
データディレクトリ |
/var/log/postgresql/ |
ログファイル |
関連ドキュメント
Go 言語 Web アプリ入門 — net/http、JSON REST API、PostgreSQL 接続、systemd デーモン化
Docker 入門(Ubuntu 24.04) — Docker Compose で PostgreSQL + Go + Nginx 環境を構築
SSL証明書で Web アプリを HTTPS 化する
Web アプリケーションを本番公開する際は、SSL証明書による HTTPS 化が必須です。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
RapidSSL 3,960円/1年(税込)〜で SSL証明書を販売しています。
審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。
SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス
