TSUBOCK★LABO-ツボックラボ-

とあるセキュリティエンジニアの技術メモブログ

MENU

Ubuntu20.04環境にPostgreSQL 12をインストールする

f:id:panda-loves-smile:20200618000648p:plain

検証用にPostgreSQL 12をインストールしたマシンが必要だったので、Ubuntu20.04の環境にインストールしました。今回はインストール時の覚書です。

動作環境

  • 仮想環境:VirtualBox 6.14.4
  • インストール先OS:Ubuntu 20.04
  • RAM:2GB

事前準備

aptインストールを実施するために事前準備を行います。インストールにcurlca-certificatesが必要になるので、インストールしておきます。

$ sudo apt install curl ca-certificates

まずはリポジトリを追加します。

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

次に認証キーを追加します。

curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

追加時にOKと表示されれば成功です!

インストール

パッケージを最新化しておきましょう。

$ sudo apt update 
$ sudo apt upgrade

最新化が終わったらPostgreSQL 12をインストールします。

$ sudo apt install postgresql-12

インストールができたか、バージョンを確認してみましょう。

$ psql -V
psql (PostgreSQL) 12.3 (Ubuntu 12.3-1.pgdg20.04+1)

これでインストールは完了です。

そのまま、外部接続許可とユーザアカウント作成をします。

外部接続許可

外部からの接続を許可する設定をしましょう。

まずはpostgresql.confを修正します。

$ sudo vi /etc/postgresql/12/main/postgresql.conf

上記ファイルの59行目あたりにあるlisten_addressesはデフォルトlocalhostが設定されているので、*を入れるか、任意のIPアドレスを入れてください。下記では全IPからのアクセスを許可する場合の例を入れています。

53 #------------------------------------------------------------------------------
54 # CONNECTIONS AND AUTHENTICATION
55 #------------------------------------------------------------------------------
56
57 # - Connection Settings -
58
59 listen_addresses = '*'          # what IP address(es) to listen on;
60                                         # comma-separated list of addresses;
61                                         # defaults to 'localhost'; use '*' for all
62                                         # (change requires restart)

次にpg_hba.confを修正します。

$ sudo vi /etc/postgresql/12/main/pg_hba.conf

上記ファイルでは認証を受け付けるIPの範囲を設定します。ファイル末行に許可したいIPアドレスの範囲を追記してください。下記では全IPからのアクセスを許可する場合の例を入れています。

host   all     all     0.0.0.0/0  trust

設定を反映させるためにサービスを再起動します。

$ sudo service postgresql restart

これで外部からの接続許可設定が完了です。

ユーザの作成

続けて、postgresqlへ接続するためのユーザを作成します。

新規ユーザ作成はスーパーユーザまたはCreateRole権限を持つユーザのみが行うことができます。

ここではインストール時に初期に設定されるスーパーユーザのpostgresを使用して行います。

今回はpostgresユーザでログインし、test_adminというユーザ名でユーザを作成してみたいと思います。

まずはpostgresユーザに切り替え、PostgreSQLに接続します。

$ sudo su - postgres
$ psql

PostgreSQLに接続したらCREATE ROLEコマンドを実行し、ユーザ作成を行います。

postgres=# CREATE ROLE test_admin LOGIN PASSWORD 'xxxxxxxxxx';

接続したユーザが登録されてるか下記コマンド確認してみましょう。

postgres=# \du
                                        List of roles
Role name  |                         Attributes                         | Member of
------------+------------------------------------------------------------+-----------
postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
test_admin |                                                            | {}

実際にログインできるか確認してみます。

$ psql -h xxx.xxx.xxx.xxx -U test_admin -d postgres
Password for user test_admin:
psql (12.3 (Ubuntu 12.3-1.pgdg20.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
    
postgres=>

無事ログインできることを確認できました。

PostgreSQLのよく使うコマンドは別途まとめておこうと思います。 今回はインストールして接続できるところまでを確認しました。