0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS7 /PostgreSQL10 に ODBC接続をした話

Posted at

Windows10 Proの端末に仮想サーバー(CentOS7)を立てて、Postgres10をインストールし、Windows側のMicrosoft AccessとODBC接続でリンクテーブルができる検証環境を作ることがあったのですが、初見のことばかりでしたので、備忘として書き残しておきます。

#筆者のスペック
CentOS 「はじめまして。Unixさんのご親戚なんですね…。まぁ、お奇麗なUIで…。」
PostgreSQL 「はじめまして。フリーでSQLサーバーをされているなんて、ご立派なんですねぇ…。」
ODBC 「生きとったんか!ワレ!!10何年ぶりかのぅ…。元気してたか?」

#設定作業
各設定については、以下の記事を主に参照しました。

CentOS/Postgresの記事は少なくないのですが、バージョンによってディレクトリ構成が異なったり、コマンドが使用できなくなっていたりで、情報を見つけても即時に使えないこともあって、そのあたりが不便でした。

また、Hyper-Vはリモートデスクトップのようにホスト⇔ゲストでクリップボード貼り付けやファイル交換ができないため、CentOSを起動した後の作業はTeraTermで行いました。(PostgreSQLの設定文書を修正するときは、CentOSのメモ帳で行うほうが快適でしたので、Hyper-V経由で作業しました。)

#ODBC接続
環境構築後にODBC接続をしましたが、接続はできませんでした。

ODBCのエラーログを見ても、接続が切られました…と英語で書いているだけで役に立たなくて困っていたのですが、Windowsでポートが開いているか確認するの記事から、PowerShellのTest-NetConnectionコマンドを利用して、CentOSのポート状況を確認して、PostgreSQLで使用しているポートが閉じた状態であることを確認。CentOS側の問題で接続できないことが切り分けできて、ポートの開放を行いました。

ポートを解除した後も、IPアドレスが正しくない、ident認証が行われていない…などのエラーが続き、そのたびに原因を調査したのですが…。結論から言えば、PostgreSQLの設定文書(postgresql.conf/pg_hba.conf)をカスタマイズしていなかったことが原因でした。接続ができるようになってから見返すと、CentOS7にPostgreSQLを構築する方法 の設定どおりにしておけば、大丈夫なはずです。

私の場合は、pg_hba.confで赤枠の部分(ident)を修正することに気付かないで時間がかかりました。
memo.png
ident認証をするためにはIdentサーバーを設置しておかないといけないですが、検証環境に設置していません。そのため、認証サーバーを必要としない md5 に変更したら、接続できるようになりました。

#リンクテーブルが作成できない! (うっかりミス)
ODBC接続が完了して、やっとリンクテーブルを作成できる…と思ったら、リンクテーブルに何も表示されません。
そうです。createdbでデータベースを作っただけで、テーブルもデータも作成していなかったからです。PostgreSQLにデータを作成したら、普通にリンクテーブルが作成できるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?