Centos7にPostgresql11をインストールと実行

yum でPostgresqlをインストールすると古めのバージョンが入るようなので別途インストール

・yumにレポジトリをインストール
PostgreSQLのページにあるリポジトリ集からCentos7用をインストール

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum update

・PostgreSQLをインストール
クライアントは postgresql11
サーバは postgresql11-server

今回はサーバをインストール
yum install postgresql11-server

・PostgreSQLのセットアップスクリプト
postgresql-11-setup というセットアップ用のスクリプトが用意されてます。
もちろん、従来どおり、initdbも使えます。
スクリプトの場合、データベースクラスタの初期値は下記で決まってます
/usr/lib/systemd/system/postgresql-11.service 内
Environment=PGDATA=/var/lib/pgsql/11/data/
スクリプトを利用した場合にinitdbのオプションはPGSETUP_INITDB_OPTIONSで設定することになります。
使用例
デフォルトロケーションなし(--locale=C )
デフォルトエンコード UTF-8(-E UTF8)
PGSETUP_INITDB_OPTIONS="--locale=C -E UTF8 " /usr/pgsql-11/bin/postgresql-11-setup initdb

・PostgreSQL 11起動と起動時自動実行 
systemctl start postgresql-11.service

systemctl enable postgresql-11.service

・PostgreSQLでデータベースにログインする
postgres というユーザが作成されているのでそちらで作業。
postgresqlの環境変数は下記の通り
--

PATH=/usr/pgsql-11/bin:$PATH
MANPATH=/usr/pgsql-11/share/man:$MANPATH
PGDATA=/var/lib/pgsql/11/data
export PATH MANPATH PGDATA
--
注意したいのは.bash_profileではなく、.pgsql_profileに記載すること
.bash_profileを読むと、.pgsql_profileを読むようになっているため
source .bash_profile  で.bash_profile読みなおし
psql -U postgres  でログイン

・postgres のパスワード変更
初期インストールのままだとパスワードが設定されていない。
pg_hba.confもpeerになっているからパスワードなしでログインできる。
identはログイン時にident(Linuxなどのユーザ名)がpostgresのロールと同じ場合にログインできる。

パスワードの変更はpsql -U postgresでログイン後
\password
※passwordの先頭はバックスラッシュ
※pg_hba.conでローカルはパスワードいらない設定になってるかも

・pg_hba.conf変更

.pgsql_profile内のPGDATAで設定
/var/lib/pgsql/11/data

peerになっている箇所をmd5に変更

local all all md5

・ユーザ、データベース追加削除

ユーザー追加
createuser -P ユーザー名
※新ユーザ用のパスワードが聞かれたあと、接続ユーザ(postgres)のパスワードも必要
ユーザ削除
dropuser ユーザー名

データベース追加
createdb データベース名
※postgres所有になる
※ -O でオーナー設定可能
createdb -O ユーザ名 データベース名

 データベース削除
dropdb データベース名