2014-09-17 3 views
1

Я установил MongoDB для моего исследования, и я создал для DBS: MYDB, рабочие местааутентификация пользователя MongoDB выполнение действий

Я создал пользователя:

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\": \"[email protected]\"}")); 

client.close(); 

Обратите внимание, что когда я создаю MongoClient, я прошу подключиться к «mydb», и я предоставляю учетные данные для созданного пользователя. Но когда я беру DB задания и пытаюсь вставить данные в коллекцию, все работает хорошо.

Я ожидал бы ошибки, что у пользователя нет привилегий, я что-то упустил?

Благодарим за помощь.

ответ

0

Вы создали пользователя devdbuser с ролью readWrite. В связи с чем devdbuser приобретает все привилегии read и имеет возможность изменять данные всех несистемных коллекций.

0

Если вы пытаетесь создать учетные данные с помощью «заданий» вместо «mydb», тогда аутентификация завершится с ошибкой.

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

Ошибка StackTrace

com.mongodb.CommandFailureException: { "serverUsed" : "localhost/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18} 

По существу пользователь один раз прошел проверку подлинности "MyDB", но имеет разрешение READWRITE для коллекции по всей базе данных

Смежные вопросы