Postgres で warning: connect to pgsql server localhost: SSL SYSCALL error: … が表示されエラーとなる

弊社ではPostgresを利用しているのですが、Ubuntu上で開発を行うときにもツールとしてはNavicatを利用しておりWindowsまたはmac上の Navicat から接続します。

Navicat GUI| MySQL, MariaDB, SQL Server, SQLite, Oracle & PostgreSQL用 DB GUI 管理ツール

しかし、このところUbuntuにインストールした Postgres9.3 へ接続すると SSL SYSCALL error が発生しフリーズしたような状況が頻発していました。

事象

Windows上の Navicat から Ubuntu 上で動作するPostgresへ接続すると接続が強制的に切断される事象が発生しています。また、その際、「SSL SYSCALL error:…」 が表示されます。

環境

今回の環境は以下の通りとなっています。

[bash] $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS" [/bash]

[bash] select version() PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit [/bash]

いろいろと調べるもエラーについてこれといった情報がなかったのですが、1件だけぴったりの情報がありました。

tauchi.net: Postfix + PostgreSQLでエラー

調べてみたところ、確かに 接続と認証(Connections And Authentication )の Security & Authentication で  ssl が true になっていました。そこで、false へ変更し再起動したところ問題なく利用できるようになりました。(※再起動が必要です。)

気になったので CentOSyumからインストールした Postgres9.3 の設定を確認したのですが 以下の通りとなっておりCentOSでは発生しないようになっていました。

[bash]

ssl = off # (change requires restart)

[/bash]

これはちょっと意外だったのですが、自分が利用する環境については初期設定をきちんと確認する必要があるのだと(当たり前のことですが)改めて感じました。

対応方法

Ubuntuにインストールされた Postgres の postgresql.conf  で ssl 設定を false に設定し再起動することで解消しました。

参考

ちなみに、このSSL設定ですが、SSLによる接続を行うか否かを指定する項目でした。(PostgreSQL 全機能バイブル P.213 4-03 接続と認証 にあります。)