Amazon Linux 2 に PostgreSQL をインストールする

Amazon Linux 2 に PostgreSQL をインストールして外部のクライアントからアクセスするまでを忘れないようにメモとして残しておく。

環境

  • AMI
    • Amazon Linux 2 Kernel 5.10 AMI 2.0.20221004.0 x86_64 HVM gp2
  • インスタンスタイプ
    • t3a.small
  • ストレージ
    • 16GB

EC2内での手順

sudo amazon-linux-extras install -y postgresql14
sudo yum install -y postgresql-server postgresql-devel
パッケージ 説明
postgresql-server initdb や pg_ctl などのユーティリティ
postgresql-devel ヘッダや pg_config などの開発関連
export PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --locale=ja_JP.UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8"
オプション 説明
--encoding initdbでPostgreSQLクラスタのデフォルト文字セット(エンコーディング)
--locale ロケールのサポートはアルファベット、並び換え、数字の書式など文化的嗜好を配慮したアプリケーションを対象にします。
--lc-collate 文字列の並び換え順
--lc-ctype 文字の分類(文字とはどんなもの?大文字小文字を区別しない?)
sudo postgresql-setup --initdb
sudo systemctl start postgresql.service    
sudo systemctl enable postgresql.service   

以下のコマンドで PostgreSQL が実行されているかを確認できる。

systemctl status --no-pager postgresql.service

インストールが完了すると postgres ユーザーが作成される。

cat /etc/passwd | grep postgres

postgres OS ユーザーの権限で postgres DB に接続をする。

sudo -u postgres psql

以下のような SQL を実行して外部からアクセスするためのパスワードを設定する。

ALTER ROLE postgres PASSWORD 'Passw0rd';

以下のコマンドでパスワードが設定されたことを確認できる。

SELECT * FROM pg_shadow;

psql を抜ける。

exit

コンフィグを設定してIPアドレスを受け入れる。

sudo vim /var/lib/pgsql/data/postgresql.conf
listen_address = '*'

アクセス制御設定ファイルを編集する。

sudo vim /var/lib/pgsql/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5

サービスリロードする。

sudo systemctl reload postgresql.service
sudo systemctl restart postgresql.service

EC2のセキュリティグループの設定

EC2 のセキュリティグループにポート 5432 を許可するインバウンドルールを追加する。

接続確認

クライアントPCで以下のコマンドを実行して接続

psql --host=$DB_IP --port=5432 --username=postgres --dbname=postgres

参考

コメント

このブログの人気の投稿

better-sqlite3 を AWS の Lambda で動かす

Python の oletools で日本語の VBA を出力する方法