Symfoware

Symfowareについての考察blog

FreeBSD 12 PHP 7.3からPostgreSQL 11に接続する

FreeBSD 12にnginxやPHP、PostgreSQLをインストールしました。
FreeBSD 12.0-RELEASEを仮想環境(KVM)にインストール
FreeBSD 12 nginx + php7.3-fpmの動作環境構築(pkg使用)
FreeBSD 12にPostgreSQL 11.1をインストールし、外部接続を許可する

この環境を使って、PHP 7.3からPostgreSQL 11.1に接続してみます。

こちらを参考にしました。
PHP 7.2からPostgreSQL 11に接続する
FreeBSD 10.0のPHP5からPostgreSQLに接続する



接続ライブラリのインストール



phpからPostgreSQLに接続するためのPDO拡張をインストールします。


# pkg install php73-pdo_pgsql



サンプルプログラムを作成して接続をテストしました。


  1. <?php
  2. try {
  3.     // ローカルのデータベース「sample」に
  4.     // ユーザー名「pgadmin」、パスワード「password」で接続
  5.     $db = new PDO ('pgsql:dbname=sample;host=localhost', 'pgadmin', 'P@ssw0rd');
  6.     
  7.     echo 'PostgreSQLと接続成功'.PHP_EOL;
  8.     // 切断
  9.     unset($db);
  10. } catch (PDOException $e) {
  11.     echo $e->getMessage();
  12. }



実行結果


# php sample.php
PostgreSQLと接続成功



接続できました。



クエリーの実行



データの登録や検索を行うサンプルも実行してみます。


  1. <?php
  2. try {
  3.     // ローカルのデータベース「sample」に
  4.     // ユーザー名「pgadmin」、パスワード「password」で接続
  5.     $db = new PDO('pgsql:dbname=sample;host=localhost', 'pgadmin', 'P@ssw0rd');
  6.     
  7.     echo 'PostgreSQLと接続成功'.PHP_EOL;
  8.     // データを追加
  9.     $db->exec("INSERT INTO test (id, value) VALUES (1, 'テスト')");
  10.     // データの検索
  11.     $stmt = $db->query('SELECT * FROM test');
  12.     while($row = $stmt->fetch()) {
  13.         echo $row['id'].':'.$row['value'].PHP_EOL;
  14.     }
  15.     
  16.     // 切断
  17.     unset($db);
  18. } catch (PDOException $e) {
  19.     echo $e->getMessage();
  20. }



動いてくれました。


# php sample.php
PostgreSQLと接続成功
1:テスト

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

  1. 2019/02/19(火) 00:02:16|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

FreeBSD 12にPostgreSQL 11.1をインストールし、外部接続を許可する

FreeBSD 12にPostgreSQL 11.1をインストールしてみます。

過去の手順を参考にしました。
FreeBSD 10.1にPostgreSQL 9.4.4をインストール


PostgreSQLのインストール



pkg installでインストール。


# pkg install postgresql11-server



自動的に、「postgres」ユーザーが作成されます。
以前は「pgsql」というユーザーだったのですが、変更されたようです。

/etc/rc.confを編集。


# vi /etc/rc.conf



「postgresql_enable="YES"」を追加します。


keymap="jp.kbd"
ifconfig_re0="inet 192.168.1.104 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
sshd_enable="YES"
nginx_enable="YES"
php_fpm_enable="YES"
postgresql_enable="YES"




データベースの初期化と起動を行います。


# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/etc/rc.d/postgresql start



これでインストールと起動は完了です。
接続をテストしてみます。


# psql -h localhost -U postgres -d postgres
psql (11.1)
Type "help" for help.

postgres=#





ユーザーの作成



pgadminというユーザーを作成してみます。


# su postgres
$ createuser --pwprompt --interactive pgadmin
Enter password for new role: [パスワード入力]
Enter it again: [パスワード再入力]
Shall the new role be a superuser? (y/n) y




接続テストのついでに、データベースやテーブルを作成してみます。


# psql -U pgadmin -d postgres
psql (11.1)
Type "help" for help.

postgres=# create database sample;
CREATE DATABASE

postgres=# create table test (id int, value text);
CREATE TABLE

postgres=# insert into test (id, value) values (1, 'test');
INSERT 0 1

postgres=# select * from test;
id | value
----+-------
1 | test
(1 row)






外部接続許可



外部から接続できるように構成します。
postgresql.confを編集。
※「/usr/local/pgsql/data/postgresql.conf」から
「/var/db/postgres/data11/postgresql.conf」に変更されたようです。


# vi /var/db/postgres/data11/postgresql.conf



listen_addressesを'localhost'から'*'に変更。


#listen_addresses = 'localhost'
listen_addresses = '*'



pg_hba.confを編集。


# vi /var/db/postgres/data11/pg_hba.conf



「IPv4 local connections:」に、接続を許可するセグメントを追加します。


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



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


# service postgresql restart




こんなPythonのサンプルで確認しました。


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




外部から接続出来ました。


$ python sample.py
ok


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

  1. 2019/02/18(月) 23:47:17|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

PostgreSQL 11.1をUbuntu 18.04へインストールし、外部から接続する

PostgreSQL 11が公開されました。
Ubuntu Server 18.04へインストールしてみます。

過去記事のこちらを参考にしました。
Postgresql 10.3をUbuntu Server 18.04にインストールし、外部アクセスを許可する
https://wiki.postgresql.org/wiki/Apt


リポジトリの追加



/etc/apt/sources.list.d/pgdg.listを作成
リポジトリのパスを記載します。


$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'



認証キーを追加


$ sudo apt-get install curl ca-certificates
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -



リポジトリを更新


$ sudo apt update
$ sudo apt upgrade



インストール実行


$ sudo apt install postgresql-11



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


$ sudo su - postgres
$ psql
psql (11.1 (Ubuntu 11.1-1.pgdg18.04+1))
Type "help" for help.

postgres=#






外部接続許可



外部からの接続を許可します。
postgresql.confを編集。


$ sudo vi /etc/postgresql/11/main/postgresql.conf



59行目付近、listen_addressesのコメントを解除。
「localhost」から「*」に変更し、すべての通信を受け入れます。


# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'




続いて、pg_hba.confを編集。


$ sudo vi /etc/postgresql/11/main/pg_hba.conf




認証を受け付けるIPの範囲を追記します。


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




編集が終わったらサービスをリスタート。


$ sudo service postgresql restart



これで外部から接続できるようになりました。



ユーザーの作成



接続用に「pgadmin」というユーザーを作成してみます。


$ sudo su - postgres
$ createuser --pwprompt --interactive pgadmin
Enter password for new role: [パスワード入力]
Enter it again: [上記とパスワード入力]
Shall the new role be a superuser? (y/n) y




作成したユーザーで接続できるかテスト。


$ psql -h localhost -U pgadmin -d postgres
Password for user pgadmin:
psql (11.1 (Ubuntu 11.1-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.



データベースやテーブルを作成してみます。


postgres=# create database sample;
CREATE DATABASE
postgres=# \c sample
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
You are now connected to database "sample" as user "pgadmin".
sample=# create table test (id int, value text);
CREATE TABLE
sample=# insert into test (id, value) values (1, '日本語テスト');
INSERT 0 1
sample=# select * from test;
id |    value    
----+--------------
1 | 日本語テスト
(1 row)

sample=#



問題なさそうです。


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

  1. 2018/11/10(土) 14:28:13|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Postgresql 10.3をUbuntu Server 18.04にインストールし、外部アクセスを許可する

Postgresql 10.3をUbuntu Server 18.04にインストールしてみます。
こちらを参考にしました。
Postgresql 10.3をUbuntu Server 16.04にインストールし、外部アクセスを許可する
https://wiki.postgresql.org/wiki/Apt


リポジトリの追加



/etc/apt/sources.list.d/pgdg.listを作成
リポジトリのパスを記載します。


$ echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | sudo tee -a /etc/apt/sources.list.d/pgdg.list



pgdg.listを作成したら認証キーを追加


$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -



リポジトリを更新


$ sudo apt update
$ sudo apt upgrade



インストール実行


$ sudo apt install postgresql-10



バージョン10.3がインストール出来ました。


$ sudo su - postgres
postgres@:~$ psql
psql (10.3 (Ubuntu 10.3-1.pgdg18.04+1))
Type "help" for help.

postgres=#





外部接続許可



外部からの接続を許可します。
postgresql.confを編集。


$ sudo vi /etc/postgresql/10/main/postgresql.conf



60行目付近、listen_addressesのコメントを解除
「localhost」から「*」に変更し、すべての通信を受け入れます。


# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'



続いて、pg_hba.confを編集。


$ sudo vi /etc/postgresql/10/main/pg_hba.conf



認証を受け付けるIPの範囲を追記します。


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



編集が終わったらサービスをリスタート。


$ sudo service postgresql restart



これで外部から接続できるようになります。



ユーザーの作成



接続用に「pgadmin」というユーザーを作成してみます。


$ sudo su - postgres
$ createuser --pwprompt --interactive pgadmin
Enter password for new role: [パスワード入力]
Enter it again: [上記とパスワード入力]
Shall the new role be a superuser? (y/n) y



作成したユーザーで接続できるかテスト。


$ psql -h localhost -U pgadmin -d postgres
Password for user pgadmin:
psql (10.3 (Ubuntu 10.3-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=#



ついでにデータベースやテーブルを作成してみます。


postgres=# create database sample;
CREATE DATABASE

postgres=# \c sample
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
You are now connected to database "sample" as user "pgadmin".

sample=# create table test (id int, value text);
CREATE TABLE

sample=# insert into test (id, value) values (1, '日本語テスト');
INSERT 0 1

sample=# select * from test;
id |    value    
----+--------------
1 | 日本語テスト
(1 row)

sample=#



いい感じです。

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

  1. 2018/05/05(土) 23:32:25|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Postgresql 10.3をUbuntu Server 16.04にインストールし、外部アクセスを許可する

Postgresql 10.3をUbuntu Server 16.04にインストールしてみます。

過去記事のこちらの手順を参考にしました。
Debian 8.7(Jessie)にPostgreSQL 9.6をインストールし、外部接続を許可する


リポジトリの追加




/etc/apt/sources.list.d/pgdg.listを作成
リポジトリのパスを記載します。


$ sudo vi /etc/apt/sources.list.d/pgdg.list



以下の1行を記載。


deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main




pgdg.listを作成したら認証キーを追加


$ sudo apt install wget ca-certificates
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -




リポジトリを更新


$ sudo apt update
$ sudo apt upgrade




インストール実行


$ sudo apt install postgresql-10




バージョン10.3がインストール出来ました。


$ sudo su - postgres
postgres@nginx:~$ psql
psql (10.3 (Ubuntu 10.3-1.pgdg16.04+1))
"help" でヘルプを表示します。

postgres=#







外部接続許可




外部からの接続を許可します。
postgresql.confを編集。


$ sudo vi /etc/postgresql/10/main/postgresql.conf




60行目付近、listen_addressesのコメントを解除
「localhost」から「*」に変更し、すべての通信を受け入れます。


# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'





続いて、pg_hba.confを編集。


$ sudo vi /etc/postgresql/10/main/pg_hba.conf




認証を受け付けるIPの範囲を追記します。


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




編集が終わったらサービスをリスタート。


$ sudo service postgresql restart




これで外部から接続できるようになります。




ユーザーの作成



接続用に「pgadmin」というユーザーを作成してみます。


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




作成したユーザーで接続できるかテスト。


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

postgres=#




ついでにデータベースを作成してみます。


postgres=# create database sample;
CREATE DATABASE

postgres=# \c sample
SSL 接続 (プロトコル: TLSv1.2、暗号化方式: ECDHE-RSA-AES256-GCM-SHA384、ビット長: 256、圧縮: オフ)
データベース "sample" にユーザ "pgadmin" として接続しました。
sample=#



いいですね。

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

  1. 2018/04/22(日) 19:53:15|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ