![PostgreSQL のインストール [Linux Mint 19]](https://jade.alt-area.jp/wp-content/uploads/2018/08/4a9279b18a4f520a68ddb40fbd068fed_s.jpg)
目次
はじめに
オープンソースのデータベースというと MySQL と PostgreSQL が双璧ですが、管理人はこれまでずっと MySQL を使ってきました。しかし、Django では PostgreSQL が推奨されていることから、PostgreSQL も試してみたいと思っていたことと、GCP から Heroku へデプロイ先を変更しようと思い調べたところ、Heroku では (MySQL も使えますが) Postgres の方が情報が多い事から PostgreSQL のインストールを行ってみました。
この記事では、Linux Mint 19 へ PostgreSQL 10.4 をインストールした際の手順を記事にします。
インストール
インストールは apt でいつもどおりに行えます。
$ sudo apt install psotgresql
スーパーユーザ (postgres) のパスワード設定
デフォルトのスーパーユーザ postgres のパスワードが設定されていないため、パスワードを設定しておきます。
sudo で postgres というユーザとして psql を立ち上げます。
$ sudo -u postgres psql
postgres ユーザのパスワードを設定します。(小文字の password 部分は設定するパスワードに置き換えてください)
# ALTER ROLE postgres WITH PASSWORD 'password';
もう一つのスーパーユーザを作成
データベースメンテナンスはスーパーユーザで行いますが、開発用の PC でメンテナンスの度に Linux ユーザを postgres に切り替えて処理をするとなるとかなり不便です。(特に外部ツールを使って接続する時など。) そこで、Linux ユーザを切り替える必要のない (PostgreSQL の) スーパーユーザ (ここでは jade とします) を作成します。
ポイントここで作成するユーザ名をログインしている Linux のユーザ名にしておくと、psql コマンドでユーザ名を省略できて便利です。
psql を立ち上げます。 postgres ユーザで接続しますので、 sudo で postgres として psql を起動します。
$ sudo -u postgres psql
データベーススーパーユーザ jade を作成します。 (password_jade は適当なパスワードに置き換えてください。)
# CREATE USER jade SUPERUSER PASSWORD 'password_jade'; # CREATE DATABASE jade;
1行目の CREATE USER は LOGIN 可能な ROLE を作成するコマンドです。
2行目はユーザ名と同名のデータベースを作成しています。ユーザ名と同名のデータベースは、データベースを指定せずに接続した場合のデフォルトデータベースとなりますので、これを用意することでデータベースを指定せずに接続してもエラーにならなくなります。
さらに、ローカルの接続 (postgres を除く) を Peer 認証からパスワード認証に切り替えます。
切り替えのためには、 /etc/postgresql/10/main/pg_hba.conf (PostgreSQL のバージョンによってフォルダ名は変わります。) を書き換えます。
local all postgres peer #local all all peer local all all md5
(postgres ユーザはそのまま = Peer 認証にしておきました。)
最後にデータベースを再起動します。
$ sudo service postgresql restart
これで、 下記コマンドでデータベースに接続できます。
$ psql -U jade
jade がログインしている Linux のユーザ名の場合は、ユーザ名を省略して下記で接続できます。(パスワードは必要です。)
$ psql
参考
PostgreSQL 10.4文書 パート III. サーバの管理 | 第20章 クライアント認証