2016-06-29 20 views
2

Ubuntu Linuxへの移行に問題があります。私は端末でPostgresを使うことができます。だから私はPostgresのパスワードに問題はありません。Knex:エラーPool2 - エラー:ユーザーのパスワード認証に失敗しました

は私が入力した場合:knex migrate:latest --env development
は私が取得:
Using environment: development Knex:warning - Pool2 - Error: Pool was destroyed Knex:Error Pool2 - error: password authentication failed for user "user"
私はpg_hba.confのに行くと、信頼する方法を設定するために、関連する質問に他の回答から読みました。私はこれをしましたが、変更はありません。 私のknex.jsファイルは次のようになります:
module.exports = { devolopment: {client: 'pg', connection: 'postres://localhost/bikesdb' }, production: { client: 'pg', connection: process.env.DATABASE_URL } };
私は何が間違っているのか分かりません。

+0

このようなpsql -h localhost -U userのように、psqlを使用してbkesdbに接続しようとしましたか? d bikesdb "?あなたはパスワードなしでdbに接続してもよろしいですか?それとも、データベース用のユーザーを作成するのに問題はありませんか? –

答えて

0

私は私のユーザーの代わりのpostgresに行くために私のpsqlを設定していました。しかし、私はpostgresのパスワードをリセットします。私はちょうどpostgresのパスワードをリセットし、私はパスワードを含む開発接続で。 (私はpostgresのパスワードをリセットする前にそれを含めようとしましたが、まだ動作しませんでした)。私が接続で指定したユーザーは私がポストグルではなかったので、それは奇妙です。あなたが最も可能性が高いので、あなたのPGパッケージのバージョンnpm install --save [email protected]

参考アップグレードする必要があると思いノード6.x.x上で実行されている

6

:ここに...アンドレイStalbeのソリューションが解決しない場合はhttps://github.com/tgriesser/knex/issues/1371

+0

package.json: "pg": "^ 4.5.6"を確認しました。残念ながら、それほど単純ではありません。 – Fav

+0

はい、これは私のためのものでした。 4.5.6にアップグレードし、私の問題を解決しました。ありがとう! – theRemix

2

は、いくつかのより多くのです思考。

は、どのようにコマンドラインからのpostgresに接続していますか?

あなただけpsql bikesdbを書いている場合、それは実際に接続するためのUNIXソケットを使用し、それがTCP経由よりも、デフォルトではpostgresで異なるセキュリティ設定があります。接続文字列をpostgres:///bikesdbに変更すると、knexがUNIXソケットを使用するようになります。

あなたはpg_hba.confにセキュリティポリシーをご確認/変更することができます。

また、あなたはpostres://localhost/bikesdbのタイプミスを持っています。

EDIT:

私はあなたがまだいくつかの一般的なPostgreSQLの設定の問題を抱えているかなり確信しています。あなたは、データベースにアクセスするためのユーザーを作成したい場合は、これを行うことができます:

CREATE ROLE bikesuser WITH LOGIN PASSWORD 'letmepass'; 
GRANT ALL PRIVILEGES ON DATABASE "bikesdb" TO bikesuser; 

をまたに接続文字列を変更します。あなたはこれが何をすべきpostgresdbするローカルホストからのアクセスを許可したい場合は

'postgres://bikesuser:[email protected]/bikesdb'

それpg_hba.confの

host all all 127.0.0.1/32 trust

でこのの何かもそれこと、有用であることを希望あなたはすでにこのすべてを試したことを聞きます。

+0

ありがとう、私はちょうどpsql bikesdbを入力していた。私は ''接続 '' postgres:/// bikesdb''に接続を変更しようとしました。悲しいことに何も変わっていない。私は一時的にすべての私の証券を信頼できるものに置き換えて、それを稼働させました。まだ何も。私はuser _and_ postgresのパスワードをリセットする必要がありました。 – Fav

0

私は同じ問題を抱えていたし、それがすべてknexが私のコマンドラインインタフェースの環境変数(LOGNAME)から取られたユーザ名を使用しようとしていたという事実についてでした。 Postgresが別のユーザ(デフォルトでpostgresを変更していない場合)を使用するように設定されている場合、認証エラーが発生します。 この問題を解決するには、Postgresサーバーへの接続に使用するURLの中に認証情報を指定します。

module.exports = { 
devolopment: {client: 'pg', 
connection: 'postres://user:[email protected]/bikesdb' 
}, 
production: { 
client: 'pg', 
connection: process.env.DATABASE_URL 
} 

}

私はURLのキーポイントハイライト:あなたがが提供するUIインターフェイスからのPostgreSQLサーバーにアクセスするユーザーの名前を確認することができますローカルホスト/ bikesdb

@パスワード: postres:// ユーザーをPostgresqlとパスワードは、インストール段階で定義したものです(変更していない場合)

関連する問題