MongoDb:通过Java驱动程序在$ external中创建用户

锡兰诺

我们需要在$ external中创建“用户”,以允许他们通过LDAP登录。在命令外壳上,以下命令:

db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'databasename' } ] } )

工作正常。

但是就我们通过Java驱动程序执行同一命令而言,我们正在获得异常。

Java代码:

DB db = mongoClient.getDB("$external");
String command = "db.getSiblingDB('$external').createUser({ user : '"+ userName +"', roles: [ { role: 'dbOwner', db: 'CMRepWs_'"+userName.toUpperCase()+"' } ] } )";

CommandResult result = db.command(command);

结果消息:

{ "serverUsed" : "lblasa1t.cm-cic.fr:27017" , "ok" : 0.0 , "errmsg" : "no such command: db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'CMRepWs_username' } ] } )" , "code" : 59 , "bad cmd" : { "db.getSiblingDB('$external').createUser({ user : 'username', roles: [ { role: 'dbOwner', db: 'CMRepWs_username' } ] } )" : true}}

我们正在运行带有Java驱动程序2.13.1的MongoDb版本3.0.1。

如果有人对如何通过Java驱动程序在$ external中创建用户有所了解,那就太好了。

非常感谢和最诚挚的问候,雅各布

编辑:

我们还使用以下代码进行测试:

    DB db = mongoClient.getDB("$external");

    String dbOwner = "dbOwner";
    String dbName = "CMRepWs_" + userName.toUpperCase();
    String role = "{ role: '" + dbOwner + "', db: '" + dbName + "'}";
    Map<String, Object> commandArguments = new BasicDBObject();

    String[] roles = new String[] { role };
    commandArguments.put("createUser", userName);
    commandArguments.put("roles", roles);
    BasicDBObject command = new BasicDBObject(commandArguments);
    CommandResult result = db.command(command);

结果是:

{ "serverUsed" : "server:27017" , "ok" : 0.0 , "errmsg" : "No role named { role: 'dbOwner', db: 'CMRepWs_Username'}@$external" , "code" : 31}

在CommandResult对象中。

锡兰诺

以下代码可以正常工作:

    DB db = client.getDB("$external");
    CommandResult result = db.command(new BasicDBObject("createUser",userName).append("roles", Collections.singletonList(new BasicDBObject("role", "dbOwner").append("db", "CMRepWs_Username"))));
    result.throwOnError();

因此,对于这个角色,还需要完善一个新的BasicDBObject。

问候,雅各布

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们如何在MongoDB Java驱动程序中配置重试次数?

如何在MongoDB Java驱动程序3中上载文档

Java MongoDB驱动程序:如何更新集合中的所有文档?

如何使用Mongo DB JAVA驱动程序从MongoDB中的数据库删除集合?

使用Java驱动程序在MongoDB中更新阵列

MongoDb在其Java驱动程序中的$ set等效项

MongoDB和Java驱动程序:查询中“忽略大小写”

更新MongoDB Java驱动程序中的多行

在Golang MongoDb驱动程序中动态创建BSON

对MongoDB的Java驱动程序中的重复唯一键错误做出反应

如何在MongoCollection Java驱动程序3中执行MongoDB findAndModify查询?

如何使用其Java驱动程序在Java的MongoDB中插入created_timestamp

在MongoDB Java驱动程序中创建查询

MongoDB Java驱动程序使用$ in过滤器创建文档

无法通过Heroku中的Selenium webdriver(Java)调用无头Chrome驱动程序

我无法使用JDBC驱动程序通过Java中的SOAP Web服务在MYSQL中插入

MongoDB Java驱动程序中的死锁

无法通过Google Kubernetes集群中的堆栈驱动程序调试Java应用

使用Java驱动程序从mongodb中的数组中删除字段

MongoDB:如何通过Java驱动程序创建经过身份验证的数据库

如何通过Java驱动程序从MongoDB中的不同列表中排序结果?

使用Java mongo驱动程序在Java中实现mongodb查询

如何使用Java驱动程序在MongoDB中创建复合文本索引

聚合查询中的Mongodb Java驱动程序使用限制

如何在MongoDB Java驱动程序3.2中编写查询,例如(A || B || C)&&(X || Y)

如何通过 .net mongoDb 驱动程序通过嵌套属性获取 mongoDb 中的文档

MongoDB Java 驱动程序中的映射/集合

MongoDB Ruby 驱动程序 - 创建没有密码的用户

无法通过 Node 驱动程序将 JSON 文件插入到 MongoDB 的集合中