[英]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.