在CentOS上安装和配置PostgreSQL

在CentOS上安装和配置PostgreSQL

章節目錄

    1. 前提条件

 

    1. 1. 安装和初始设置

 

    1. 2. 取消peer认证

 

    1. 3. 使用psql进行连接

 

    1. 4. 通过SSH端口转发从其他设备连接

 

    5. 打开防火墙以从其他设备连接

前提 (Qian ti)

    • 以下は、VirtualBoxにインストールしたCentOS7の環境で確認したもの。

具体的には、この手順で作成した環境下で行った。

安装和初始设置

コマンドの取得

公式のdownloadページに、インストール先情報を入力すると、インストールコマンドが取得できる。

設定した項目は以下

Select Version: 9.6
Select platform: CentOS 7
Select architecture: x86_64

取得したコマンド

# Install the repository RPM:
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

# Install the client packages:
yum install postgresql96

# Optionally install the server packages:
yum install postgresql96-server

# Optionally initialize the database and enable automatic start:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl enable postgresql-9.6
systemctl start postgresql-9.6

コマンドの実行

上記コマンドを順に実行する(途中、なにか聞かれたらYと答える)

postgresql-9.6 サービスが起動していることを確認する。

   # systemctl status postgresql-9.6
   Active: active (running)

解除对等认证

概要

最初はpeer認証になっている。
CentOS上のユーザー名、パスワードの組み合わせが、PostgreSQL上のユーザー、パスワードの組み合わせでないとPostgreSQLに接続できない。
使いづらいので、普通にパスワード認証すれば接続できるようにする。

設定ファイルの編集

pg_hba.confを編集する。
ファイルの場所や説明は公式を参照。
local接続のpeer認証をmd5に変更する。

   vi /var/lib/pgsql/9.6/data/pg_hba.conf

   # "local" is for Unix domain socket connections only
   local   all             all                                     peer
   ↓
   # "local" is for Unix domain socket connections only
   local   all             all                                     md5

postgresユーザーのパスワード設定

変更を反映する前に、postgresユーザーにパスワードを設定する。
postgresユーザーでpsqlに接続。

# su – postgres
$ psql -U postgres

psqlに入ったら、パスワード変更

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

$ exit

サービスを再起動して、pg_hba.confの設定を反映させる。

   # systemctl restart postgresql-9.6
    パスワード認証で接続できるようになる
   # psql -U postgres
   Password for user postgres:

使用SSH端口转发连接到他的机器。

    listenするホストの設定
   vi /var/lib/pgsql/9.6/data/postgresql.conf

   # listen_addresses = 'localhost'     # what IP address(es) to listen on;
   # port = 5432                        # (change requires restart)
   ↓
   listen_addresses = '*'     # what IP address(es) to listen on;
   port = 5432                        # (change requires restart)
    接続を許可するホストの設定
   vi /var/lib/pgsql/9.6/data/postgresql.conf

   # TYPE  DATABASE        USER            ADDRESS                 METHOD
   # IPv4 local connections:
   host    all             all             127.0.0.1/32            ident
   ↓
   # IPv4 local connections:
   host    all             all             0.0.0.0/0               md5

sshポートフォワーディングを利用して別のマシンから接続

ポートフォワーディング

OpenSSHが使用できる前提

ssh -N -L 15432:192.168.56.99:5432 root@192.168.56.99

ポートフォワーディングしたマシンから接続

psql -U postgres -h localhost -p 15432

他从机器连接 (打开防火墙的洞)

    publicゾーンに永久的に登録しているサービスの確認
   # firewall-cmd --zone=public --list-services --permanent
   ssh dhcpv6-client
    ファイアウォールに登録できるサービスの確認
   # firewall-cmd --get-services

   pop3 pop3s postgresql privoxy
    PostgreSQLを追加
   # firewall-cmd --add-service=postgresql --zone=public --permanent
   success
    サービスが登録されたことを確認
   # firewall-cmd --zone=public --list-services --permanent
   ssh dhcpv6-client postgresql
    ファイアウォールを再起動
   # systemctl restart firewalld
    他マシンからpsqlで接続できるようになる。
   psql -U postgres -h 192.168.56.99 -p 5432
    ポートを変更したいときは/usr/lib/firewalld/services/postgresql.xmlを編集して、別の場所に置く。
   cp /usr/lib/firewalld/services/postgresql.xml /etc/firewalld/services/postgresql.xml
   vi /etc/firewalld/services/postgresql.xml

   <?xml version="1.0" encoding="utf-8"?>
   <service>
   <short>PostgreSQL</short>
   <description>PostgreSQL Database Server</description>
   <port protocol="tcp" port="5432"/>
   </service>
   ↓
   <?xml version="1.0" encoding="utf-8"?>
   <service>
   <short>PostgreSQL</short>
   <description>PostgreSQL Database Server</description>
   <port protocol="tcp" port="<変更後のポート番号>"/>
   </service>
广告
将在 10 秒后关闭
bannerAds