そーだいなるらくがき帳

そーだいが自由気侭に更新します。

PostgreSQL11 のインストールまとめ

最近、いろんなPostageSQL11のインストールをしたのでまとめておく。

共通事項

PostgreSQLはデフォルトはOSのロケールを使う。 そこでロケールはCを指定するのが一般的なのでno-localeを指定した手順となっている。 また文字エンコーディングもデフォルトはsql_asciiなためUTF-8をを指定する手順となっている。 正しいロケールエンコードを指定していないと後から本番DBを作り直すことになったりするので、最初からちゃんと作っておこう。 いろんな現場で失敗したDBを見てきたのでマジでちゃんと最初にやっておいてくれ!!

それとpostgresql.confとpg_hba.confの話はしない。 この2つはDB再起動すれば反映できるし、昔書いたことあるのでそちらを見て。

soudai1025.blogspot.com

CentOS 7

以下手順。

-- PostgreSQLのインストール
# yum localinstall https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
# yum install postgresql11-server postgresql11-contrib postgresql11-devel postgresql11-libs
-- PostgreSQLのセットアップ
-- postgresユーザで実行する必要があります
# su postgres
$ /usr/pgsql-11/bin/initdb -E UTF-8 --no-locale -D /var/lib/pgsql/11/data
$ exit
# systemctl start postgresql-11.service
# psql -V
psql (PostgreSQL) 11

インストーラでのインストール

GUIでもインストール出来る。 WindowsMacOSがある。

インストーラシンプルなので指定する箇所は

  • インストール先のフォルダ
    • デフォルトのままで大丈夫
  • Select Componentsの指定
    • サーバ以外にもSQLエディタであるpgadmin3のインストールを聞かれる。
    • 我々にはpgadmin4があるので無視して良い
  • postgres(スーパーユーザー)のパスワード
    • 任意のパスワードを指定してください
  • アクセスポート
    • デフォルトの5432で大丈夫

インストールしたら勝手に起動してる。 自動起動なので初学者には良さそう。 ただしロケールなどはコマンドと違って最初に指定できないのでtemplate0を利用してデータベースを作成する必要がある。

CREATE DATABASE データベース名 LC_COLLATE 'C' LC_CTYPE 'C' ENCODING 'UTF8' TEMPLATE template0;

DBの作り方はこれで良い。 RDSの場合も同様。

※注意点 2018/10/08 現在、Windowsのアインストールでコケる。 postgresql-jpのSlackの #beginners でも話題になってた。 バグっぽいので自分で頑張る必要がある。

PostgreSQL: Re: BUG #12824: Error during uninstall‏

Dockerを使ってインストール

dockerのインストール自体は割愛、ググって。 PostgreSQLはコミュニティの公式イメージが Docker Hub に公開されてるのでそれをつかう。

dockerの環境があればインストールは下記のコマンドで一発。

# docker run -d --name {コンテナ名} -e POSTGRES_PASSWORD={postgresユーザのパスワード} -p {ホスト側のフォワードするポート:フォワード先のコンテナのポート} postgres{:バージョン(指定しなければ最新)}
-- 実際のコマンド例
# docker run -d --name postgres -e POSTGRES_PASSWORD=hogehoge -p 5432:5432 postgres:11
-- コンテナの起動を確認
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
06d37d52ee97        postgres:11         "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:5432->5432/tcp   postgres
-- コンテナへログイン
$docker exec -ti postgres bash
-- 確認
# psql --version
psql (PostgreSQL) 11beta4 (Debian 11~beta4-1.pgdg90+1)
-- DBにログイン
# psql -U postgres

Docker便利。 とりあえず11はもうすぐ出るし、もうSourceからbuildしなくても試せるのでちょっとベンチマークも含めて試す。

以上メモでした。