1
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 1 year has passed since last update.

MongodbのAuthenticationError

Last updated at Posted at 2023-04-17

背景

mongooseを使うためにURIにdb名を入れないといけなかった。

これまではmongooseを使っていなかったのでnew MongoClient(dbのURI).db(db名)でOKだった。

dbのURI=mongodb://user:pass@localhost:27017

db名=bookshelf

みたいな感じ、、

mongooseをつかったらdbのURIにdb名を指定しないといけない。

dbのURI=mongodb://user:pass@localhost:27017/bookshelf

としたら

Untitled.png

認証エラーとなりdbにコネクトできない。。

解決

dbのURI=mongodb://user:pass@localhost:27017/bookshelf

上記のURIだとbookshelf DBに認証をしに行ってるので認証エラーが起きてる。

私は認証DBはadminなのでadminで認証を行ってbookshelfに接続を行うようにしないといけない。。

調べると、authSourceをオプションでつけるとOKっぽい。

公式にこんなことが書かれてました。

Specify the database name associated with the user's credentials.
If authSource is unspecified, authSource defaults to the defaultauthdb specified in the connection string. If defaultauthdb is unspecified, then authSource defaults to admin.

ユーザーの資格情報に関連するデータベース名を指定します。
authSource が指定されていない場合、authSource のデフォルトは接続文字列で指定された defaultauthdb になります。defaultauthdbが指定されていない場合、authSourceのデフォルトはadminになります。

https://www.mongodb.com/docs/manual/reference/connection-string/

defaultauthdbとは下記の太字部分。

mongodb://user:pass@localhost:27017/bookshelf

なのでbookshelfに認証しようとしてたんだなと分かりました。

最終的には

dbのURI=mongodb://user:pass@localhost:27017/bookshelf?authSource=admin

これでdbに認証付きで接続できました。

1
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
1
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?