PostgreSQL on Azure IaaS

主にPaaS(Azure Databae for PostgreSQL Flexible Server)との違いをチェックするために使うのだけど、あまりしょっちゅうやることではないので忘れる。毎回「どうして5432/tcpにアクセスできないんだ。。。」ってなるので、メモ。RHELに入れるパターンなので、Ubuntuの場合は適宜読み替えのこと。

  1. パッケージインストール
    sudo dnf -y install postgresql-server
  2. データベースの初期化
    sudo su
    su – postgres
    initdb
  3. PostgreSQLのpg_hba.conf (/var/lib/pgsql/data/pg_hba.conf) に以下の行を追加
    host all all your_ip/32 trust
  4. PostgreSQLのpostgresql.conf (/var/lib/pgsql/data/postgresql.conf) を編集(これを忘れがち…)
    listen_addresses = '*'
  5. rootに戻って、postgresqlを再起動後、再度postgresユーザーに
    exit
    systemctl restart postgresql
    su - postgres
  6. psqlで接続し、ロールにパスワードを設定
    psql
    ALTER ROLE postgres WITH PASSWORD 'your_password'
  7. rootに戻って、ファイアウォールルールを変更
    exit
    firewall-cmd --add-service=postgresql --zone=public --permanent
    firewall-cmd --reload
  8. Azure PortalでVMのネットワーク設定から、InboundルールにPostgreSQLを追加

最後のネットワーク設定は、Just-In-Timeでテスト中だけ5432/tcpを開ける方がセキュア。