Kの雑記

最近忘れやすいので、備忘録がわり

postgreSQL11.6インストール

CentOS用のレポジトリ設定

各OS用のレポジトリ一覧

PostgreSQL RPM Repository (with Yum)

centos用のレポジトリをインストール

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

PostgreSQLのインストール

postgresqlをインストールする。バージョン指定する場合は末尾にバージョンを指定するとよい。11.6なら以下のようにする。

yum install postgresql11-server-11.6 postgresql11-contrib-11.6

自動起動する場合サービスを有効にする。

systemctl enable postgresql-11.service

データベースクラスタの作成

データベースの作成場所をデフォルトから変更

vi /usr/lib/systemd/system/postgresql-11.service

変更前)
Environment=PGDATA=/var/lib/pgsql/11/data/
変更後)
Environment=PGDATA=/opt/data/

systemctl daemon-reload

データベースクラスタの作成

PGSETUP_INITDB_OPTIONS="-E UTF8 --locale=C" /usr/pgsql-11/bin/postgresql-11-setup initdb

パス設定

su - postgres

vi /var/lib/pgsql/.pgsql_profile

PATH=/usr/pgsql-11/bin:$PATH
MANPATH=/usr/pgsql-11/share/man:$MANPATH
PGDATA=/opt/data
export PATH MANPATH PGDATA

postgresqlの起動

systemctl start postgresql-11

postgresユーザならpg_ctl startでもOK

ユーザとDBを作成

-bash-4.2$ createuser --login --pwprompt testuser
Enter password for new role: 
Enter it again: 
-bash-4.2$ createdb --owner=testuser testdb
-bash-4.2$ psql -l 

パスワード変更するなら以下でもOK

# testuserのパスワード変更
postgres=# \password testuser
# postgresユーザのパスワード変更(postgresユーザでログインした場合)
postgres=# \password

リモート接続を許可

世界中からアクセス可能

vi /opt/data/postgresql.conf

変更前)
#listen_addresses = 'localhost'
変更後)
listen_addresses = '*'

アクセス制御

ローカルからは自由にアクセス、リモートはパスワードアクセスする場合

# TYPE  DATABASE        USER            ADDRESS                 METHOD

local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               md5

変更を反映

pg_ctl reloadだとpostgresql.confの変更が反映されないっぽい。systemctl restart postgresql-11で反映した。

ログイン

  • psql testdb testuser
  • psql -h [host] -U [user] -d [db]

以下を参考にしました。

CentOS 7にPostgreSQL11をインストールする - Qiita