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 データベース名
・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 データベース名