Edited at
DelphiDay 9

FireDAC接続用PostgreSQLをオンプレで環境構築(CentOS7)したときの失敗談

Linux / PostgreSQLを、よく理解されている方には、あたりまえのことかもしれませんが、オンプレの環境構築でのインストール設定時に、自分がハマったことを、書かさせていただきます。

内容は、インストール方法は他にも多数ありますが、CentOS7 GnomeDeskTopで、 EDBのGUI と yum の2つのインストールのパスワードの設定の違いについてです。


Delphi / FireDACでの開発中、手元のオンプレ機器に、yumでインストールしたとき(自分では、いろいろ見ながら正しく設定できているはずと思いながら)接続しようとして、下記のようなエラーでつながらなかった。(EDB版GUIでは、でなかった)

0001.png

[FireDAC][Phys][PG][libpq] could not connect to server: Connection timed out (0x0000274C/10060)

Is the server running on host "192.168.24.63" and accepting

TCP/IP connections on port 5432?

pg_err2.png

[FireDAC][Phys][PG][libpq] password authentication failed for user "postgres"


対処確認などとしては、サーバーの

pghba.conf の確認(外部接続の許可が適切にされているか)

IPv4 local connections:

host all all 127.0.0.1/32 trust

host all all 192.168.24.0/24 md5

postgres.conf の確認

listen_addresses='*'(リッスンアドレス/ポート番号は間違っていないか)

post=5432

その他、ファイアウォールなども確認し、どうも正しく設定されているはずだが、上記エラーが出る(pgAdminなどでの接続も同様のエラーが出ます)


これは、インストール時に(パスワードを設定したつもりだが、未設定のまま) いとうことでした。

ここでの 「パスワード」 は、CentOS7 / PostgreSQLサーバーに、Windows クライアントのFireDACから、接続するときの、データベースへ接続するためのパスワードです。



CentOS7で、 GUI で、インストールの場合は、特に問題はありませんでした。

EDB版のGUIでインストールする場合は、パスワードの設定は、ここ

passwd2.png

で行い、ここで指定した、パスワードが、データベースへのログインのパスワードなので、ハマりどころは、ありません。



CentOS7で、 yum で、インストールの場合は

ハマりどころとして

「postgresユーザでログインできるように、passwdコマンドを使ってpostgresユーザのパスワードを設定します。」といった内容をデーターベースにログインするパスワードと勘違いしてしまっていたことです。


passwd postgtes や、sudo passwd postgtes

passwd.png

といった、投稿記事などを断片的に、見てしまった場合

postgresユーザでデータベースにログインできるように、passwdコマンドを使ってパスワードを設定する、

といった記事みると、データベースにログインするパスワードと勘違いしてしまっていた(私だけかもしれませんが)



yumインストール時のパスワード設定での注意点は、


passwd postgtes はOSのユーザーのパスワードで、データベースのログイン用パスワードでは、ありません。



yumでインストールした場合のデータベースへのログインパスワードの設定は、

psqlから

postgres=# alter role ユーザー名 with password 'パスワード';

(画面はこんな感じになります)

alter2.png

例)  alter role postgres with password 'Passwd123';

の手順が必要です。


この2つのインストール方法で、インストールされるパスも、異なりますので、confファイルの位置も異なります。

代表的なパスは

EDB は、/opt/PostgreSQL/バージョン番号/data/.conf

yum は、/var/lib/pgsql/data/
.conf

などです。


PostgreSQLのインストール方法は、Delphiをご使用の方になじみ深い(FirebirdやInterbase)くらべると、Web上の記事が非常に多い(多すぎるくらい)。

ただ、ググってみて、ご自分で使用されるメモ書き的なのも多くヒットし、FireDACでのクラサバ用の接続では、PostgreSQL初心者が、希望する環境構築と該当しない場合もあります。

既に、長期間、使用している、他のデータベースがあれば、なおさら、用語の違いなどを、間違って解釈してしまったりすることに、気をつれねばと、思った次第です。

なにかと、奥深い、PostgreSQLですが、ライセンス、Web上の情報量の多さや、他のシステムなどの連携といったところでは、今後の優位性があると感じています。

Delphi/FireDACで、PostgreSQLの新規ご利用者のなにかしらの、アドバイスになっていれば幸いでございます。


またここに、「PostgreSQLのロール」について、詳しく記載されています。

より詳しく、知りたい方は、ご一読を、お薦めします。

https://qiita.com/nuko_yokohama/items/085b75ee4c0938936ab9


追記

GUIでのインストール時

Windowsは、ロケール C の選択でも、問題で憎いと思いますが

CentOS7の場合は、ロケール C を選択するとも、エンコーディングが、SQLAsciiになるので、注意が必要です。

sqlascii.png