どこで、つまりどのデータベースでユーザーを作成しましたか?通常、ユーザーはデータベースadmin
で作成されます 。 MongoDBに接続するときは、常に認証データベースと使用するデータベースを指定する必要があります。
デフォルトは少し紛らわしく、実際には一貫性がありません。概要については、次の表を参照してください。
+----------------------------------------------------------------------------------------+
|Connection string | Authentication | Current |
| | database | database |
+----------------------------------------------------------------------------------------+
|mongo -u <...> -p <...> --authenticationDatabase admin myDB | admin | myDB |
|mongo -u <...> -p <...> myDB | myDB | myDB |
|mongo -u <...> -p <...> --authenticationDatabase admin | admin | test |
|mongo -u <...> -p <...> localhost:27017 | test | test |
|mongo -u <...> -p <...> --host localhost:27017 | admin | test |
|mongo -u <...> -p <...> | admin | test |
+----------------------------------------------------------------------------------------+
URI形式の接続文字列を使用する場合は、次の文字列に対応します。
mongodb://<username>:<password>@hostname/myDB?authSource=admin
mongodb://<username>:<password>@hostname/myDB
mongodb://<username>:<password>@hostname?authSource=admin
mongodb://<username>:<password>@hostname
admin
でユーザーを作成したと思います データベースですが、接続時にauthenticationDatabaseを指定しないため、Mongoはデフォルトでmydatabase
に設定します。 ユーザーがデータベースmydatabase
に存在しないため、失敗した場合 。