web-dev-qa-db-ja.com

mongolabに接続できません。MongoErrorを取得しています:auth failed

最近、mongoLabにアカウントを作成しました。次のステートメントを使用してデータベースに接続しようとしています。

var mongoose = require('mongoose');
mongoose.connect('mongodb://mk:[email protected]:47742/mkdb');

常に次のエラーが表示されます

MongoError: auth failed
at Function.MongoError.create (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66
at Callbacks.emit (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.Push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
27
mkuniyil

Mlabのアカウントusernameおよびpasswordではなく、データベースusernameおよびpasswordを使用していることを確認してください。

MLab(旧MongoLab)で、次の操作を行います

  1. Usersに移動します
  2. Add Database User
  3. ユーザー名とパスワードを選択してください

これで、mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>を使用してシェルでこれをテストできます

41
Joseph

Mongolabは2.6.xデータベースを3.0.xにアップグレードしました。残念ながら、mongo3には異なる認証メカニズムがあるため、古いクライアントには互換性がありません。

Mongooseはネイティブmongoドライバーを使用しているため、アップグレードする必要があります。これは通常、ローカルmongoインストールをアップグレードすることにより行われます。

Mongojsを使用している場合は、最新バージョンにアップグレードし、接続時にオプションオブジェクトにauthMechanism:'ScramSHA1'パラメーターを追加します。

db = mongojs('mongodb://username:[email protected]:32132/mydb', ["mycollection"], {authMechanism: 'ScramSHA1'});
24
gtsouk

私にとっての解決策は:

$ npm install --save --save-exact [email protected]

によれば HerokuアプリはMongoDBが3.0に更新された後にクラッシュする

9
Oded Regev

Database User create ここでは、mLabのユーザー名とパスワードがデータベースのユーザー名とパスワードではないことを知っておく必要があります...接続文字列に正しいユーザー名とパスワードを使用したかどうかを確認する必要があります

ここでデータベースユーザーアカウントを作成できます---- >>

次のように私の接続定数

const db ="mongodb://<My database username>:<my database password>.mlab.com:39648/videoplayer"
5

db urlの最後に?authSource = yourDB&w = 1を追加するだけです

mongoose.connect( 'mongodb:// user:password @ Host/yourDB?authSource = yourDB&w = 1')これは私のために働きます。 &w = 1は重要です

例えば

MONGO_URI = 'mongodb:// kahn:[email protected]:13402/ecommerce?authSource = ecommerce&w = 1';

https://github.com/Automattic/mongoose/issues/4587

これは私の命を救った

1
sannimichaelse

1-データベースが稼働していることを確認します。 2-アクセス資格情報を持つdbユーザーを作成することを忘れないでください。

それがあなたを助けることを願っています!

1

適切なdbユーザー名とパスワードを使用していることを確認してください。

コードを介してdbに接続しようとしていて、ユーザー名とパスワードに「@」、「$」などの特殊文字が含まれている場合は、encodeURIComponent() funtionを使用してURIをエンコードしてください

例:"localhost:// pooja:" + encodeURIComponent( 'pooja @ 123')+ "/ trymynewdb"次に、エンコードされたuriを使用してdbに接続します。

0

Mshellを介して接続を試すことができます。mongooseを使用して接続しているときに、データベースユーザー名と正しいパスワードを指定した場合でも、このような問題が発生しました。

ターミナルで次のコマンドを入力するだけです

mongo ds239412.mlab.com:39412/videoplayer11 -u dbuser -p dbpassword( コマンドは異なります。こちらをご覧ください ).

そして、mongoose経由で接続していたモデルファイルのコードを削除します。

私のために働いた。幸せそうな顔。

0
magma123

パスワードに特殊文字が含まれている場合は、次の特殊文字のURLエンコード値を確認するのが最善です: rl encoding list

ただし、接続を試みる前に、データが最初に送信されていることを確認することを強くお勧めします。それを確認する1つの方法は、送信されているデータをconsole.logに記録することです。例:

console.log(process.env.MONGO_ATLAS_PW);
0
Jero Dungog

Mongooseの古いバージョン(バージョン3.8.10)を使用しているときにこのエラーが発生していました。最新リリース(バージョン5.0.10)にアップグレードすると、エラーが消えて接続が確立されました。

Npm install [email protected] --save ...を実行するだけです。ただし、バージョンを最新のリリースに置き換えてください。

0
Mushirih