使用连接字符串进行mongodb身份验证

时间:2012-04-16 05:23:58

标签: c# mongodb

Mongo进程的连接字符串具有/ database选项。这是什么意思?这是否意味着它在mongo服务器上验证特定数据库。提前谢谢

5 个答案:

答案 0 :(得分:5)

使用C#驱动程序,您通常不会使用在连接字符串上放置数据库名称的选项。部分支持它与其他驱动程序提供某种程度的兼容性。

MongoServer.Create忽略数据库名称。连接字符串上的任何凭据(用户名/密码)都将用作所有数据库的默认凭据。

数据库名称仅供MongoDatabase.Create使用,它调用MongoServer.Create然后只为您调用GetDatabase。

所以:

var connectionString = "mongodb://localhost/database";
var database = MongoDatabase.Create(connectionString);

只是一个快捷方式:

var connectionString = "mongodb://localhost";
var server = MongoServer.Create(connectionString);
var database = server.GetDatabase("database");

在您首次尝试使用数据库之前,实际上不会进行身份验证。

答案 1 :(得分:1)

像这样:

var cliente = new MongoClient("mongodb://usuariocualquiera:tuclave@localhost:27017/BASEDEDATOS");

可以打电话

var collection = database.GetCollection<BsonDocument>("CUALQUIERCOLECCION");

答案 2 :(得分:0)

它将连接到指定的数据库。 如果数据库不存在,它将建立连接,并且在创建新对象时,它将实例化数据库

答案 3 :(得分:0)

您将使用admin数据库中创建的用户mongodb和localhost:27017上的密码mongodb创建/返回mongod进程的现有实例。您不需要调用Connect() - 驱动程序将根据需要自动执行此操作。

答案 4 :(得分:0)

假设在admin数据库中创建了用户帐户,并假设您使用的是名为“ mongo”的命令行界面(CLI)程序,则可以使用以下用户名和密码连接到3节点副本集:

语法:

mongo --host "<replicaset name>/<host 1 resolvable name>:<host 1 port>,<host 2 resolvable name>:<host 2 port>,<host 3 resolvable name>:<host 3 port>" --username <username> --password <password> --authenticationDatabase <database name>

示例:

mongo --host "replset1/ip-172-31-48-110.eu-west-1.compute.internal:27017,ip-172-31-116-186.eu-west-1.compute.internal:27017,ip-172-31-29-140.eu-west-1.compute.internal:27017" --username barry --password supersecretpassword --authenticationDatabase admin