Symfoware

Symfowareについての考察blog

Debian 9(Stretch)にPostgreSQL 9.6をapt-getでインストールし、外部アクセスを許可する

Debian 9にPostgreSQL 9.6をインストールしてみます。

過去の記事を参考にしました。
Debian 8(Jessie)にPostgreSQL 9.4をapt-getでインストールする



PostgreSQLのインストール



apt-getでインストール


# apt-get install postgresql-9.6




インストール時のログの抜粋です。


(略)
postgresql-client-common (181) を設定しています ...
systemd (232-25) のトリガを処理しています ...
postgresql-common (181) を設定しています ...
ユーザ postgres をグループ ssl-cert に追加

Creating config file /etc/postgresql-common/createcluster.conf with new version
Creating config file /etc/logrotate.d/postgresql-common with new version
(略)
postgresql-9.6 (9.6.3-3) を設定しています ...
Creating new cluster 9.6/main ...
config /etc/postgresql/9.6/main
data /var/lib/postgresql/9.6/main
locale ja_JP.UTF-8
socket /var/run/postgresql
port 5432
update-alternatives: /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) を提供するために自動モードで /usr/share/postgresql/9.6/man/man1/postmaster.1.gz を使います
postgresql-contrib-9.6 (9.6.3-3) を設定しています ...
python3 (3.5.3-1) を設定しています ...
running python rtupdate hooks for python3.5...
(略)




ユーザー「postgres」が自動的に作成されています。
また、python3も一緒にインストールされるようです。

postgresユーザーに切り替えて、psqlを実行。


# su - postgres
postgres@debian9:~$ psql
psql (9.6.3)
"help" でヘルプを表示します.

postgres=#




バージョン9.6.3がインストールできました。

「\q」で終了します。


postgres=# \q
$







データベースユーザーの追加(createuser)



データベースに接続するためのユーザーを作成してみます。
今回は「pgadmin」というスーパーユーザーを作成してみます。


$ createuser --pwprompt --interactive pgadmin
新しいロールのためのパスワード: (設定するパスワード入力)
もう一度入力してください:(上記と同じパスワード入力)
新しいロールをスーパーユーザにしますか? (y/n)y




これでユーザーが作成できました。
ログイン出来るかテストしてみます。


$ psql -U pgadmin -d postgres -h localhost
ユーザ pgadmin のパスワード: (パスワードを入力)
psql (9.6.3)
SSL接続(プロトコル: TLSv1.2, 暗号化方式: ECDHE-RSA-AES256-GCM-SHA384, ビット長: 256, 圧縮: オフ)
"help" でヘルプを表示します.

postgres=#




接続できました。
データベースを作成してみます。


postgres=# create database sample;
CREATE DATABASE
postgres=#




「\l」でデータベースの一覧が表示できます。


postgres=# \l

                                         データベース一覧
名前    | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) |    
アクセス権    
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     |
sample    | pgadmin | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     |
template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     | =c/postgres         +
         |         |                 |             |                 | postgres=CTc/postgres
template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     | =c/postgres         +
         |         |                 |             |                 | postgres=CTc/postgres
(4 行)




ちゃんとsampleデータベースが作成できています。






外部接続許可



別の端末から接続できるようにしてみます。
まず、postgresql.confを編集。


# vi /etc/postgresql/9.6/main/postgresql.conf




60行目付近のlisten_addressesを'localhost'から'*'に変更します。


#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all

listen_addresses = '*'




続いてpg_hba.confを編集。


# vi /etc/postgresql/9.6/main/pg_hba.conf




「IPv4 local connections」に、接続を許可するIPの範囲を指定。
今回は192.168.1.0/24の範囲を追加しました。


# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24         md5




編集が終わったら、PostgreSQLを再起動。


# service postgresql restart




Psycopg2を使用して、接続をテストしてみます。


  1. # -*- coding:utf-8 -*-
  2. import psycopg2
  3. con = psycopg2.connect(
  4.     host = "192.168.1.101",
  5.     port = 5432,
  6.     database="sample",
  7.     user="pgadmin",
  8.     password="P@ssw0rd")
  9. con.close()
  10. print(u'ok')




ちゃんと外部から接続できたようです。


$ python sample.py
ok




関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/28(水) 22:09:02|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ