【wsl】PostgreSQLインストール

【wsl】PostgreSQLインストール

はじめに

このページで得られること

  • wsl環境でpostgresqlのインストール方法について
  • 接続・認証設定について

動作環境

  • Windows10 Home
  • Ubuntu 18.04 LTS

インストール

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

以下、updateとupgrade後のメッセージ(一部抜粋)

データベースシステム内のファイルの所有者は"postgres"となります。
このユーザがサーバプロセスも所有する必要があります。

データベースクラスタはロケール"ja_JP.UTF8"で初期化されます。
そのためデフォルトのデータベース符号化方式はUTF8に設定されました。
initdb: ロケール"ja_JP.UTF8"用の適切なテキスト検索設定が見つかりません
デフォルトのテキスト検索設定はsimpleに設定されました。

データベージのチェックサムは無効です。

既存のディレクトリ/var/lib/postgresql/11/mainの権限を修正します ... 完了
サブディレクトリを作成します ... 完了
max_connectionsのデフォルト値を選択します ... 100
shared_buffersのデフォルト値を選択します ... 128MB
selecting default timezone ... Asia/Tokyo
動的共有メモリの実装を選択します ... posix
設定ファイルを作成します ... 完了
ブートストラップスクリプトを実行します ... 完了
ブートストラップ後の初期化を行っています ... 完了
データをディスクに同期します...完了

成功しました。以下のようにしてデータベースサーバを起動できます。

    pg_ctlcluster 11 main start

Ver Cluster Port Status Owner    Data directory              Log file
11  main    5433 down   postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
update-alternatives: /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) を提供するために自動モードで /usr/share/postgresql/11/man/man1/postmaster.1.gz を使います       
invoke-rc.d: could not determine current runlevel
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
systemd (237-3ubuntu10.31) のトリガを処理しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
ureadahead (0.100.0-21) のトリガを処理しています ...

pg_ctlcluster 11 main start でサーバ起動できると書いてはいるが、これでは起動ができない。

serviceコマンドを使用してpostgresを起動する。

$ sudo service postgresql start  # postgres起動
$ sudo su - postgres # 管理者権限でpostgresサーバーへ

バージョン確認

$ psql
psql (11.5 (Ubuntu 11.5-3.pgdg18.04+1)、サーバ 10.10 (Ubuntu 10.10-1.pgdg18.04+1))
"help" でヘルプを表示します。

詳しくは、公式サイト参照

接続・認証設定

$ sudo vi /etc/postgresql/11/main/postgresql.conf
~前略~
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*' # 追加
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5433                            # (change requires restart) # コメントアウト
port = 5432 # 5432に変更(デフォルト設定だが明示的に設定)

認証設定

$ sudo vi /etc/postgresql/11/main/pg_hba.conf
~前略~
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.1/24          md5 # 追加

postgres再起動 ※再起動中windowsファイアウォールの警告が出るが「yes」をクリック

$ sudo service postgresql restart
 * Restarting PostgreSQL 11 database server

あとは、ユーザ作成するなりお好きにどうぞ。