我在MongoLab上开设了一个帐户(免费的沙箱帐户用于测试)。我的代码在我当地的MongoDb服务器上运行,运行正常,没有任何问题。
在MongoLab中,我创建了一个数据库并为该数据库创建了一个用户,并在我的应用程序中放置了他们给我的连接字符串:
mongodb://<dbuser>:<dbpassword>@<my_id>.mlab.com:52408/<my_db>
我甚至试过这个:
mongodb://<dbuser>:<dbpassword>@<my_id>.mlab.com:52408/<my_db>?authMode=scram-sha1&rm.tcpNoDelay=true
在我的.NET代码中,我正在连接到我的数据库:
MongoClient client = new MongoClient(MY_CONNECTION_STRING);
IMongoDatabase database = client.GetDatabase("MyTestDb");
_versionRulesCollection = database.GetCollection<VersionRule>("VersionRules");
_versionDetailsCollection = database.GetCollection<VersionDetails>("VersionDetails");
但是当我尝试做这样的事情时:
_versionDetailsCollection.Indexes.CreateOneAsync(Builders<VersionDetails>.IndexKeys.Ascending(x => x.ProductName).Ascending(y => y.DeviceType).Ascending(z => z.VersionName))
我得到一个例外
System.AggregateException: One or more errors occurred. ---> MongoDB.Driver.MongoCommandException: Command createIndexes failed: not authorized on MyTestDb to execute command { createIndexes: "VersionDetails", indexes: [ { key: { ProductName: 1, DeviceType: 1, VersionName: 1 }, name: "ProductName_1_DeviceType_1_VersionName_1" } ] }
即使尝试进行查询,我也得到了:
not authorized for query on MyTestDb .VersionDetails
我没有看到任何方法为门户网站上的用户设置权限。数据库是在我的应用程序中动态创建的。我在这里迷路了。
我做错了什么(它适用于我的本地机器)?