Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@dekosuke-menti

centos7へpostgresインストール公開設定まで

More than 1 year has passed since last update.

centos7へのpostgresインストール方法を共有します。
よくわからない設定ファイルをいじる方法ではありません。

rootになる

dekosuke@: su root

postgresqlインストール

バージョン指定のある場合とない場合の両方載せます。

以下指定のバージョンがない場合

バージョン問わない場合は以下の方法でok

postgresqlインストール

バージョン問わない場合.
root@: yum install -y postgresql-server

バージョン確認

バージョン問わない場合.
root@: psql --version
psql (PostgreSQL) 9.2.23

アンインストール方法

バージョン問わない場合.
root@: yum -y remove postgresql*

以下指定のバージョンがある場合

指定のバージョンがある場合は
https://yum.postgresql.org
などからrpmをダウンロードして対象サーバーに送っておく。
それか下記のようにwgetする。

wget rpm

root@: wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

rpmからインストール

バージョン指定の場合.
root@: rpm -ivh pgdg-centos96-9.6-3.noarch.rpm 
root@: yum install -y postgresql96-server

バージョン確認

バージョン指定の場合.
root@: psql --version
psql (PostgreSQL) 9.6.9

rpmの場合のアンインストール

バージョン指定の場合.
root@: rpm -evh pgdg-centos96-9.6-3 
root@: yum -y remove postgresql*

接続まで

ubuntuでは必要なかった初期化をinitdbでする必要がある。
むしろinitdbするのが普通らしい。

DB初期化

root@: /usr/pgsql-9.6/bin/postgresql96-setup initdb

DB起動と自動起動

root@: systemctl start postgresql-9.6
root@: systemctl enable postgresql-9.6

備考)DB停止と自動起動停止

#停止
root@: systemctl stop postgresql-9.6
#自動起動停止
root@: systemctl disable postgresql-9.6

備考)起動ステータスと自動起動ステータス確認

#起動ステータス確認
systemctl status postgresql-9.6
#自動起動ステータス確認
systemctl is-enabled postgresql-9.6

DB接続確認

root@: su postgres
bash@: psql
postgres@: \q
bash@: exit
root@:

ユーザー作成

bash@: createuser --createdb --superuser --pwprompt dekosuke-menti

#こんな警告出るかもしれませんが無視でok
could not change directory to "/home/dekosuke": 許可がありません

このコマンドでは、dbが作れるsuperuserで、ログイン時にパスワードが必要な(おそらく)割と一般的なユーザが作れる。superuserでなくしたい場合は--superuserをはずして作成。

詳しくは

bash@: createuser --help

で。

ユーザーの削除

bash@: dropuser dekosuke-menti

作成済みのdbがない場合は上記だけで行ける。
作成済みの場合は後述のコマンドでdb削除してから。

DBの作成

bash@: createdb dekosukeDB --encoding=UTF-8 --locale=C --owner=dekosuke-menti --template=template0

作成したユーザーでDBに入る

後述の外部公開設定をしたあとに実施してください。
postgresユーザーなら普通に入れますが、作成ユーザーだと無理でした。

bash@: psql -U dekosuke-menti -d dekosukeDB

入ったあとのコマンド

1.出るには
dekosukeDB=# \q

2.既存のロール(ユーザ確認)
dekosukeDB=# \du

3.既存のdb一覧
dekosukeDB=# \l

DBの削除

bash@: dropdb dekosukeDB

各種設定

外部接続設定

root@: vi /var/lib/pgsql/9.6/data/postgresql.conf

--60行目あたりに以下を追加--
listen_addresses = '*'  
--ここまで--

root@: vi /var/lib/pgsql/9.6/data/pg_hba.conf

--ファイル末尾に以下を追加--
host    all             all             all            md5
--ここまで--

md5以外のMETHODは下記がある。

trust: すべての接続を無条件で許可
reject: すべての接続を拒否
md5: md5暗号化によるパスワード認証
password: 平文によるパスワード認証
ident: TCP/IP接続で、linuxで作成してあるユーザー名とpostgresのユーザー名が一致した場合認証
peer: ローカル接続で、linuxで作成してあるユーザー名とpostgresのユーザー名が一致した場合認証

confの設定ミスをすると起動できない。
そのときのログは下記に格納される。

備考)ログファイル格納場所

root@: cd /var/lib/pgsql/9.6/data/pg_log/

再起動かリロード

#再起動
systemctl restart postgresql-9.6
#リロード
systemctl reload postgresql-9.6 

その後は手持ちのsqlクライアントで適当に設定しつなげられた。
つながらない場合はfirewalldを落としてみる。

#停止
root@: systemctl stop firewalld.service

#入れることを確認したら起動
#あとはfirewalldの設定をすればpostgres側の設定は終わり
root@: systemctl start firewalld.service
4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
dekosuke-menti
おれはデコスケメンチだ。フリーランスの24歳だ。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?