CentOS7 にPostgreSQLをインストールしてリモート接続まで








PostgreSQLのインストール




sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
ls -l /etc/yum.repos.d/
sudo yum -y install postgresql11-server


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



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



サーバ起動 自動起動設定



sudo systemctl start postgresql-11.service
sudo systemctl enable postgresql-11.service

sudo firewall-cmd --permanent --add-port=5432/tcp





データベースの作成



データベース環境変数の設定をおこなう。

passwd postgres
> password 入力
su - postgres
以降はユーザ postgres で作業。

tee ~/.pgsql_profile << 'EOS'
PATH=/usr/pgsql-11/bin:$PATH
MANPATH=/usr/pgsql-11/share/man:$MANPATH
PGDATA=/var/lib/pgsql/11/data
export PATH MANPATH PGDATA
export PGHOST=/var/run/postgresql
EOS



cat ~/.pgsql_profile
. ~/.bash_profile
echo $PGDATA


psql
Create Database test;

データベースが作成できることを確認する。



リモート接続できるようにする



ファイアウォールが動作している場合ポート5432を許可する。

firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload


アクセス元の接続許可の設定。

vi $PGDATA/pg_hba.conf

以下追記
# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
host all all all trust


アクセスがあったらDBへ接続。
IPやホスト名が指定できる。

-bash-4.2$ vi $PGDATA/postgresql.conf

以下書き換え
listen_addresses = '*'

PostgreSQL再起動
systemctl restart postgresql-11.service

以上でどこからでもアクセスできるようになる。
セキュリティは壊滅状態なので後でちゃんとしないといけない。

セキュリティ対策も書いた。
https://trueman-developer.blogspot.com/2019/10/centos7-postgresql.html


参考



https://qiita.com/tom-sato/items/e1903cb974fb6c6d5664
https://qiita.com/tom-sato/items/d5f722fd02ed76db5440
http://dqn.sakusakutto.jp/2013/03/psql_could_not_connect_to_server_connection_refused.html


2019年10月26日土曜日