(node.js) Cannot read property ‘query’ of nullでひっかかった話

投稿者: | 2016年10月3日

皆さんこんにちはヒロウミです。

最近node.jsの勉強を初めて、ビギナーのための Node.jsプログラミング入門:こちらのサイトでチュートリアルを行っていたところ、PostgreSQLとの接続ではじかれたので、その解決方法を備忘録として残しておきたいと思います。

1.エラー内容

チュートリアルに従いコーディングを行って、ページにアクセスすると以下のようなエラーがでます。

 

2.エラー詳細を出力させる

上記にエラーだけでは理由が分からなかったので、コード中にエラーログの出力文を追加し、エラー詳細を確認。

何やら「Ident認証」というのに失敗しているらしい。

3.PostgreSQLの設定ファイルを編集する

/var/lib/pgsql/data/pg_hba.conf

とりあえずすべて「trust」に変えてみたらうまくいきました。

ですがこれはあくまで、テスト環境での一時しのぎの対応なので、本番環境などでは行わないでください。

最後にPostgreSQLの認証パターンをメモっておこうと思います。

trust認証 trust認証が指定されるとPostgreSQLは、サーバに接続できる全ての人に対して (データベーススーパーユーザさえも)その人が指定する任意のデータベースユーザ名としてのアクセス権限が付与されていると想定します。
ident認証 ident認証方式は、クライアントのオペレーティングシステムのユーザ名を入手し、それを(オプションのユーザ名マップとともに)許可されているデータベースのユーザ名として使用します。
peer認証 peer認証方式はカーネルからクライアント上のオペレーティングシステムのユーザ名を取得し、 それをデータベースユーザ名(オプションのユーザ名マップとともに)として使用することにより動作します。この方法はローカル接続でのみ使用可能です。

「PostgreSQL 9.1.5文書」より引用