【AWS】【EC2】PostgreSQLをインストールしよう

PostgreSQL

 

AWSでDBを使用する際にはRDSDynamoDBが多いと思います。

ただ、勉強用に使用したり、個人開発などコストがかけられない場合があります。

そこで、今回はEC2にPostgreSQLをインストールし、初期設定をしていきます

※実行ユーザー:ec2-user

 

インストール

 

 

パッケージを確認する

 

amazon-linux-extras を確認し、インストールできるバージョンを確認します

(実行コマンド)

(実行結果)

→ postgresql10~14をインストールできます

 

インストール

 

今回は、postgresql14をインストールします

また、一緒に追加のパッケージもインストールします

各パッケージに関しては以下の記事をご参考ください

 

(実行コマンド)

(実行結果)

 

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

 

インストールしたPostgreSQLのバージョンを確認します

(実行コマンド)

(実行結果)

今回はpostgresql14 をインストールしたので、14と表示されればOKです

 

初期設定

起動する前に初期化

 

データベースクラスタ(データベースを格納する領域)の作成など初期化します

具体的には、/var/lib/pgsql/dataに設定ファイルなどが配置されます

(実行コマンド)

(実行コマンド)

 

/var/lib/pgsql/initdb_postgresql.log にログがあるそうなので、確認します

(実行コマンド)

(実行結果)

エラーは出てなさそう!なので、次に進みます

 

postgresql を起動&自動起動設定

 

  1. postgresql を起動します
  2. 起動したか確認します

    Active: active (running) となっていることを確認します
  3. 自動起動(サーバーの起動と一緒に起動する)を設定します
  4. 自動起動設定を確認します

    enabled と表示されればOK!

 

(実行結果)

 

サーバー内のpostgresユーザーの設定をする

 

postgresqlをinstall をした際にサーバー内に postgres というユーザーが作成されました。

このユーザーに対して、パスワード と sudoers の設定をします

パスワードを設定する

 

(実行コマンド)

→ パスワードを2回入力して設定します

(実行結果)

 

sudo 権限を付与する

 

  1. visudo コマンドで対象のファイルを開きます
  2. 「i」を押して、編集モードにします
  3. 下記を記述します
  4. 「esc」キーを押して編集モードを抜けます
  5. :wq!」と入力して、ファイルを保存します

 

これで、postgresユーザーで sudo コマンドが使用できるようになりました

 

DB の postgres ユーザーのパスワードを設定する

 

先ほどとは違い、データベースの postgres ユーザーのパスワードを設定します

 

  1. postgres ユーザーに切り替えます

    先ほど設定したパスワードを入力します
  2. データベースの postgres ユーザーのパスワードを設定します

 

PostgreSQLの設定を変更する

設定ファイルを変更する

 

※postgres ユーザーのまま実行してください

 

/var/lib/pgsql/data/postgresql.conf

 

以下2つのパラメータを確認します

  1. listen_addresses
    PostgreSQLに接続できるIPアドレスを設定できるパラメータ。
    すべてのIPから受け付ける場合には ‘*’
    複数指定する場合には ‘<IP①>,<IP②>,…’とカンマ(,)区切りで指定する。
    今回は ‘*’ としますが、セキュリティ的にはIPを指定したほうがいいです。
  2. port
    PostgreSQLを立ち上げるポート番号を指定しているパラメータ。
    デフォルトは5432ですが、セキュリティ的には変更したほうがいい。
    今回はデフォルトの5432のままにします。

 

(設定手順)

  1. vim で /var/lib/pgsql/data/postgresql.conf を編集します
  2. 「listen_addresses」と検索します
    →「/listen_addresses」と入力し、Enterキー を押します
  3. 「i」と入力し、INSERTモードにします
  4. listen_addresses=’*’」へ変更します
    ※適宜、portを含め設定したい値へ変更してください
  5. Escキーを押し、INSERTモードを終了します
  6. :wq!」と入力し、Enterキーを押します

 

(設定後のファイルを一部抜粋)

 

/var/lib/pgsql/data/pg_hba.conf

 

ローカル(今回の場合EC2)や他のサーバー、PCなどIPアドレスごとに
アクセスする際の認証方法を設定します

 

PostgreSQLの認証方式(一部)

1.peer
OS側のユーザー名がデータベース側のものと一致している場合のみ接続を許可
※ローカルからの接続にのみ適用可能
2.ident
クライアントのユーザー名がデータベース側のものと一致している場合のみ接続を許可
3.md5
ログイン時にパスワードを使用して接続を許可

「-U」でDBのユーザーを指定しない場合はOSやクライアントのユーザー名を使用

 

詳細は下記をご参考ください

 

(設定手順)

  1. vim で /var/lib/pgsql/data/pg_hba.conf を編集します
  2. 「listen_addresses」と検索します
    →「/listen_addresses」と入力し、Enterキー を押します
  3. 「i」と入力し、INSERTモードにします
  4. ローカルからアクセスする場合の認証方法を peer → md5 へ変更します(下記へ変更)
  5. 外部からアクセスする場合の認証方法を md5 に変更します(下記へ変更)
  6. Escキーを押し、INSERTモードを終了します
  7. :wq!」と入力し、Enterキーを押します

 

(設定後のファイルを一部抜粋)

 

 

PostgreSQLを再起動して、設定を反映させる

 

(実行コマンド)

 

(実行結果)

 

EC2のセキュリティグループの設定を変更する

 

筆者はPostgreSQLをデフォルトの5432ポートで起動させているので、
そこへアクセスできるようEC2のセキュリティグループを設定します

まず、AWSコンソール->EC2->インスタンス とアクセスし、
対象のEC2を選択し、セキュリティにあるセキュリティグループをクリックします

 

 

インバウンドのルールを編集」をクリックします

 

 

ルールを追加」をクリックし、タイプを「PostgreSQL」を選択します

今回は、自分のPCからのみアクセスしたいので、ソースに「マイIP」を選択します

PostgreSQLを立ち上げるポートをデフォルトから変更した場合は、
タイプを「カスタムTCP」、ポート範囲を変更後のポート番号にしてください

 

 

Postgresqlに接続してみる

EC2内からアクセスしてみる

 

EC2内で下記コマンドを実行します
※コマンドの実行ユーザーはなんでも大丈夫です

 

(実行コマンド)

 

(実行結果)

 

自分のPCからアクセスしてみる

 

PowerShell や ターミナル、Ubuntsuなど自分のPCからアクセスしてみます

 

(実行コマンド)

 

(実行結果)

 

 

以上で、PostgreSQLのインストールと初期設定、アクセスまで完了しました

 

参考記事

 

EC2上にPostgreSQL14をインストールしてpgAdmin4と接続するまで
https://www.dragonarrow.work/articles/157
AWSでPostgreSQLサーバーを作る - Qiita
最新情報:2013年11月よりAmazonRDSがPostgreSQLに対応しました。…
クラウド上にPostgreSQLサーバを作る方法
インターネット上に自分専用のポスグレ(PostgreSQL)データベースサーバがあると便利だから、作りたい! そんな時の作り方を紹介します。 今回やること Linux(Ubuntu)サーバをEC2を使って作成して、PostgreSQLをイン

 

コメント

タイトルとURLをコピーしました