Mongoose: MongoError:認証に失敗しました

作成日 2016年10月02日  ·  10コメント  ·  ソース: Automattic/mongoose

私はmongolabにmongodbを持っています。
コマンドで接続すれば

mongo uri/$db -u user -p pass

大丈夫です。
マングースを使って接続すると

mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}')

エラーがあります

MongoError: Authentication failed

マングースを使用しています4.6.1

needs clarification

最も参考になるコメント

うーん、ユーザーはどのデータベースで定義されていますか? MongoDBユーザーは、クロスデータベース権限を持っている場合でも、dbsにスコープされます。したがって、ユーザーがdb定義されていない場合、ユーザーがmongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')ように設定する必要があります。 'admin'データベースで定義されています。

また、mongodb 3.xを使用している場合は、SCRAM-SHA-1認証を使用しているかどうかはわかりません。 以下の両方を試してください。

  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')

全てのコメント10件

また、チェックしました-バグは4.4.20バージョンでは再現されません。 正しく動作します

ユーザー名とパスワードに英数字以外の文字が含まれていますか? 同様の問題は、パスワードで:のような文字を処理することで過去に表面化しました

また、mongooseとmongodbのバージョンは何ですか?

Mongodb'v3 '
いいえ、英数字以外の記号はありません。

うーん、ユーザーはどのデータベースで定義されていますか? MongoDBユーザーは、クロスデータベース権限を持っている場合でも、dbsにスコープされます。したがって、ユーザーがdb定義されていない場合、ユーザーがmongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authSource=admin')ように設定する必要があります。 'admin'データベースで定義されています。

また、mongodb 3.xを使用している場合は、SCRAM-SHA-1認証を使用しているかどうかはわかりません。 以下の両方を試してください。

  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=SCRAM-SHA-1')
  • mongoose.connect('mongodb://${user}:${pass}@${uri}/${db}?authMechanism=MONGODB-CR')

@ vkarpov15 、はい、

node.jsを使用してcloud.mongodb.comに接続しましたが、2つの接続が成功した理由と方法がわかりませんが、接続が失敗した場合もあります。
image

コンソールに表示されます

server / replset / mongosオプションは非推奨になり、すべてのオプションはオプションオブジェクトのトップレベルでサポートされます[poolSize、ssl、sslValidate、sslCA、sslCert、sslKey、sslPass、sslCRL、autoReconnect、noDelay、keepAlive、connectTimeoutMS、fa
mily、socketTimeoutMS、reconnectTries、reconnectInterval、ha、haInterval、replicaSet、secondaryAcceptableLatencyMS、acceptableLatencyMS、connectWithNoPrimary、authSource、w、wtimeout、j、forceServerObjectId、serializeFunctions、ignoreUndefined、raw、bu
fferMaxEntries、readPreference、pkFactory、promiseLibrary、readConcern、maxStalenessSeconds、loggerLevel、logger、promoteValues、promoteBuffers、promoteLongs、domainsEnabled、keepAliveInitialDelay、checkServerIdentity、validateOptions、appname、auth]

(ノード:3268)UnhandledPromiseRejectionWarning:未処理のpromise拒否(拒否ID:1):MongoError:認証に失敗しました
(node:3268)DeprecationWarning:未処理のpromise拒否は非推奨になりました。 将来、処理されないpromise拒否は、ゼロ以外の終了コードでNode.jsプロセスを終了します。

私はそれを試しましたが、うまくいきませんでした、

マングースv4.5.3
mongodb v3.4.7

errMsg:
MongoError: Authentication failed. 14|gougouS | at Function.MongoError.create (/www/website/gougouServer/source/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)

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

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
私のためにこの仕事。 &w=1は重要です

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

mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
私のためにこの仕事。 &w=1は重要です

ありがとうございます。 :3良い答え

このページは役に立ちましたか?
0 / 5 - 0 評価