MongoDB Java在运行时创建数据库和用户

时间:2019-04-09 17:27:04

标签: mongodb

我有一个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实例。我使用mysuperadmin内创建了一个名为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用户。为该新创建的数据库创建新用户需要做什么。

0 个答案:

没有答案