3

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

4

5 回答 5

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");

在您第一次尝试使用数据库之前,实际上不会发生任何身份验证。

于 2012-04-16T15:36:31.397 回答
1

像这样:

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

可以打电话

var collection = database.GetCollection<BsonDocument>("CUALQUIERCOLECCION");
于 2017-05-23T22:42:32.230 回答
0

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

于 2012-04-16T05:38:53.060 回答
0

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

于 2012-04-16T10:28:54.860 回答
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
于 2019-01-25T17:23:56.427 回答