認証を有効にし、DB 固有のアクセス許可を持つユーザーを作成した MongoDB サーバーがあります。このアプリのユーザーは、以下に示すように定義されています。つまり、geoAdmin には、関連するデータベースの読み取り、読み取り書き込み、および dbOwner 権限があります。
MongoDB shell version: 3.0.0
connecting to: 192.168.2.89/test
> use geo_db
switched to db geo_db
> db.getUser("geoAdmin")
{
"_id" : "geo_db.geoAdmin",
"user" : "geoAdmin",
"db" : "geo_db",
"roles" : [
{
"role" : "read",
"db" : "geo_db"
},
{
"role" : "dbOwner",
"db" : "geo_db"
},
{
"role" : "readWrite",
"db" : "geo_db"
}
]
}
次のクエリは正常に機能します。つまり、ローカル mongo クライアントからリモート サーバーに接続します。
mint:~ $ mongo 192.168.2.89:27017 -u geoAdmin -p secret --authenticationDatabase geo_db
MongoDB shell version: 3.0.0
connecting to: 192.168.2.89/test
> use geo_db
switched to db geo_db
> db.LAD_DEC_2013_GB_BFE.findOne({},{'properties.LAD13NM':1})
{
"_id" : ObjectId("54ffe2824f0787ec1293017f"),
"properties" : {
"LAD13NM" : "Hartlepool"
}
}
次に、同じローカル クライアント上の ReactiveMongo Play アプリから同じリモート ホストに接続します。アプリの構成ファイルに次の URL を指定します。
# ReactiveMongo
mongodb.uri = "mongodb://geoAdmin:secret@192.168.2.89:27017/geo_db"
しかし、アプリが同じコレクションから読み取ろうとすると、MongoDB の "code = 13" エラーが発生します。
[DetailedDatabaseException: DatabaseException['not authorized for query on geo_db.LAD_DEC_2013_GB_BFE' (code = 13)]]
認証が有効になっていないローカル MongoDB に接続すると、アプリは正常に動作します。
ここで何がうまくいかないのでしょうか?