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
です。
あとは普通に使うだけ。