Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB用户身份验证执行操作_Mongodb_Mongodb Java - Fatal编程技术网

MongoDB用户身份验证执行操作

MongoDB用户身份验证执行操作,mongodb,mongodb-java,Mongodb,Mongodb Java,我已经为我的研究安装了MongoDB,并创建了DBs:mydb,jobs 我创建了一个用户: db.createUser( { user: "devdbuser", pwd: "123456", roles: [ "readWrite" ] } ) 然后在我的jave代码中,我尝试: MongoClient client = new MongoClient(Arrays.asList(new ServerAddress[] { new ServerAddress("localhost", 27

我已经为我的研究安装了MongoDB,并创建了DBs:mydb,jobs

我创建了一个用户:

db.createUser( { user: "devdbuser", pwd: "123456", roles: [ "readWrite" ] } )
然后在我的jave代码中,我尝试:

MongoClient client = new MongoClient(Arrays.asList(new ServerAddress[] { new ServerAddress("localhost", 27017)}),
                             Arrays.asList(new MongoCredential[] { MongoCredential.createMongoCRCredential("devdbuser", "mydb", "123456".toCharArray()) } ));

DB myDB = client.getDB("jobs"); // Here I get the jobs DB with user I created for 'mydb'

DBCollection collection = myDB.getCollection("myfirstcollection");
collection.insert((DBObject)JSON.parse("{\"name\": \"First user\", \"email\": \"first_user@mail.com\"}"));

client.close();
请注意,当我创建MongoClient时,我请求连接到“mydb”,并为创建的用户提供凭据。 但是,当我使用jobs DB并尝试将数据插入集合时,一切都很好

我希望出现一个用户没有权限的错误,我是否遗漏了什么


感谢您的帮助。

您已经创建了一个具有角色的用户
devdbuser
。因此,
devdbuser
获得
读取的所有特权,并能够修改所有非系统集合的数据

如果您尝试使用“作业”数据库而不是“mydb”创建凭据,则身份验证将失败

MongoClient client = new MongoClient(Arrays.asList(new ServerAddress[] { new ServerAddress("localhost", 27017)}),
    Arrays.asList(
new MongoCredential[] { MongoCredential.createMongoCRCredential("devdbuser", 
"jobs", "123456".toCharArray()) } ));
错误堆栈跟踪

com.mongodb.CommandFailureException: { "serverUsed" : "localhost/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18}
基本上,用户曾经在“mydb”上进行过身份验证,但拥有跨数据库集合的读写权限