我有一个Java项目,该项目已与Mongo Java驱动程序集成在一起,并且连接,操作操作均正常进行。
现在,我希望该Java项目能够在同一mongo服务器上的运行时上创建new database
。我还希望能够在此new database
中创建一个新集合并在该集合中插入一个虚拟文档。我还想为此new user
创建一个new database
,并且只能对其r / w访问此new database
。
这是我到目前为止所拥有的-
String dbName = "db_43eab51e-9436-4b09-8285-4253489811fd_nn2";
MongoClient superClient = MongoDBSuperConnection.getClientInstance();
MongoDatabase db = superClient.getDatabase(dbName);
CreateCollectionOptions options = new CreateCollectionOptions();
options.capped(true);
db.createCollection("sysconfig", options);
Document obj = new Document();
obj.append("dbcreated", "true");
obj.append("created_date", new Date());
db.getCollection("sysconfig").insertOne(obj);
此superClient
连接到我服务器上的Mongo实例。我使用mysuper
在admin
内创建了一个名为userAdmin
的新用户,并能够与此用户成功连接到服务器。但是当我尝试执行以上代码时-它显示此错误-
Command failed with error 13: 'not authorized on db_43eab51e-9436-4b09-8285-4253489811fd_nn2 to execute command { create: "sysconfig", capped: true }' on server <server-ip>
更新
我能够使用以下代码创建新数据库-
MongoClient superClient = MongoDBSuperConnection.getClientInstance();
MongoDatabase db = superClient.getDatabase(dbName);
db.createCollection("sysconfig");
Document obj = new Document();
obj.append("dbcreated", "true");
obj.append("created_date", new Date());
db.getCollection("abc").insertOne(obj);
现在,我正在尝试为此数据库创建一个新用户-
MongoClient superClient = MongoDBSuperConnection.getClientInstance(dbName);
MongoDatabase db = superClient.getDatabase(dbName);
pass = createPassword();
Document[] role = new Document[1];
Document roleDoc = new Document();
roleDoc.append("role", "readWrite");
roleDoc.append("db", dbName);
role[0] = roleDoc;
Document command = new Document();
command.append("createUser", user);
command.append("pwd", pass);
command.append("roles", role);
Document result = db.runCommand(command);
现在db.runCommand(...)函数引发错误-Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='mySuper', source='db_752e4eb6-bab3-4a49-abe3-615bc39c1f23_yy', password=<hidden>, mechanismProperties={}}
我的“ mySuper”用户是admin的root用户。为该新创建的数据库创建新用户需要做什么。