簡體   English   中英

mongodb 使用連接字符串進行身份驗證

[英]mongodb authentication with connection string

Mongo 進程的連接字符串有 /database 選項。 這是什么意思? 這是否意味着它對 mongo 服務器上的特定數據庫進行身份驗證。提前致謝

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

它將連接到指定的數據庫。 如果數據庫不存在,它將建立連接,並且在創建新對象時,它將實例化數據庫

您將使用admin數據庫中創建的用戶mongodb和localhost:27017上的密碼mongodb創建/返回mongod進程的現有實例。 您不需要調用Connect() - 驅動程序將根據需要自動執行此操作。

假設用戶帳戶是在admin數據庫中創建的,並假設您使用的命令行界面(CLI)程序名為“mongo”,則可以使用以下命令連接到包含用戶名和密碼的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"

我在這里使用了文檔作為參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM