Linux / PostgreSQLを、よく理解されている方には、あたりまえのことかもしれませんが、オンプレの環境構築でのインストール設定時に、自分がハマったことを、書かさせていただきます。
内容は、インストール方法は他にも多数ありますが、CentOS7 GnomeDeskTopで、 EDBのGUI と yum の2つのインストールのパスワードの設定の違いについてです。
Delphi / FireDACでの開発中、手元のオンプレ機器に、yumでインストールしたとき(自分では、いろいろ見ながら正しく設定できているはずと思いながら)接続しようとして、下記のようなエラーでつながらなかった。(EDB版GUIでは、でなかった)
[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?
[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でインストールする場合は、パスワードの設定は、ここ
で行い、ここで指定した、パスワードが、データベースへのログインのパスワードなので、ハマりどころは、ありません。
CentOS7で、 yum で、インストールの場合は
ハマりどころとして
「postgresユーザでログインできるように、passwdコマンドを使ってpostgresユーザのパスワードを設定します。」といった内容をデーターベースにログインするパスワードと勘違いしてしまっていたことです。
###passwd postgtes や、sudo passwd postgtes
といった、投稿記事などを断片的に、見てしまった場合
postgresユーザでデータベースにログインできるように、passwdコマンドを使ってパスワードを設定する、
といった記事みると、データベースにログインするパスワードと勘違いしてしまっていた(私だけかもしれませんが)
###yumインストール時のパスワード設定での注意点は、
###passwd postgtes はOSのユーザーのパスワードで、データベースのログイン用パスワードでは、ありません。
###yumでインストールした場合のデータベースへのログインパスワードの設定は、
psqlから
postgres=# alter role ユーザー名 with password 'パスワード';
(画面はこんな感じになります)
例) 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になるので、注意が必要です。