Postgres を Ubuntu 20.04 にインストールするよ(CentOSとの違いもあわせて)

Ubuntu20.04 に Postgresをインストールする手順をまとめておきます。
aptでインストールされるバージョンは12っぽいですね。

今まで使っていた、CentOSとは細々違うので、そのあたりを重点的に記録を残します。

インストール

sudo apt install postgresql

postgresql-contrib なんかもあわせてインスコしているケースがありますが、基本的な使い方であれば、これだけで十分かと思います。

# psql --version
psql (PostgreSQL) 12.7 (Ubuntu 12.7-0ubuntu0.20.04.1)

ちなみに、インストールされたバージョンは、やっぱ12でした。特段問題なし。

initdbが不要

いつもCentOSだったので行っていたのですが、Debian系の場合は不要みたいですね。DBパスの変更したい場合には別途行えるみたいです。

設定ファイル周りもいつもpostgresユーザー配下にあったのですが、これも以下のetc配下になっていました。

/etc/postgresql/12/main

こっちの方がわかりやすいですね。

postgresユーザーで操作

postgresユーザーが作られています。

sudo su - postgres
$psql

ユーザー変更した後、psqlで管理コンソールに入れます。

ローカルからのアクセスはpeer認証になっていたので、Linuxのユーザー同じDBユーザーがマッピングされます。なのでログイン中のLinuxユーザーに対応したDBユーザーがあれば、認証なしにコンソールに入れるという仕組みです。

ちなみに、postgresユーザーはDBではマスターユーザーになります。

このままでもいいんですが、個人的にはDBユーザーとアクセス方式の管理がややこしくなっちゃうので、postgresユーザー以外は、peerやらident認証を捨てて、md5などのID、パスワード方式でのアクセスに切り替えちゃいます。

md5認証に変更

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

ここを

# "local" is for Unix domain socket connections only
local   all             all                                     peer

こんな感じに変更

# "local" is for Unix domain socket connections only
local   all             all                                     md5

そんでもって再起動

sudo systemctl restart postgresql.service

です。

外部からの接続を許可する

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

の設定ファイルを

#listen_addresses = 'localhost'
listen_addresses = '*'

でOK。

listen_addresses = 'localhost,[IPアドレス]'

受け入れるネットワークの指定なので、相手のIPアドレスではなく自分のIPアドレスが必要。複数のLANにつながっている場合に、どっちを開放するかといったケースに利用する感じ。

どのサーバから受け入れるかは、

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

この最後に、

host    all             all             xxx.xxx.xxx.xxx/32            md5

などを追加し指定します。

host    all             all             0.0.0.0/0            md5

こんな感じですべてのホストからアクセスをmd5認証で受け入れて、ファイヤーウォール側でホスト制限をかけてあげると運用上もすっきりして好き。このあたりは方針も様々。

設定変更後は再起動、

sudo systemctl restart postgresql.service

です。

あとは普通に使うだけ。