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

本文关键字:MongoDB 身份验证 字符串 连接 | 更新日期: 2023-09-27 18:31:24

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

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

使用

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

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

像这样:

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

并且可以调用

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

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

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

假设用户帐户是在管理数据库中创建的,并且假设您使用的是名为"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

我正在分享我对这件事的经验,这对我有用。所以基本上字符串的组成如下:

"mongodb://[user]:[password]@[host]:[port]"

和一些例子:

"mongodb://yourusername:yourpassword@localhost:27017"

我在这里使用了文档作为参考