Mongoプロセスの接続文字列には/databaseオプションがあります。どういう意味ですか?mongoサーバー上の特定のデータベースを認証するという意味ですか。よろしくお願いします。
5 に答える
C#ドライバーでは、通常、接続文字列にデータベース名を付けるオプションは使用しません。他のドライバーとのある程度の互換性を提供するために部分的にサポートされています。
MongoServer.Createはデータベース名を無視します。接続文字列のすべての資格情報(ユーザー名/パスワード)は、すべてのデータベースのデフォルトの資格情報として使用されます。
データベース名は、MongoDatabase.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データベースに作成され、「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