Как войти в систему с пользователем с ролью UserAdmin в mongodb

#mongodb #mongodb-shell

#mongodb #mongodb-оболочка

Вопрос:

У меня запущен сервер mongod и запущен как служба в ubuntu 14.04, я запустил оболочку mongo и создал пользователя.

 db.createUser(   {
    user: "testAdmin",
    pwd: "12345678",
    roles: [ { role: "userAdmin", db: "students" } ]  
} )
  

после этого я изменил редактирование mongod.conf и установил auth=true и перезапустил сервер mongod как службу.

После всего этого, когда я хочу запустить оболочку mongo с помощью user testAdmin.

 mongo -u testAdmin -p 12345678 --authenticationDatabase students
  

Но я не могу войти в систему, и это выдает мне ошибку.

 MongoDB shell version: 3.2.10
connecting to: 127.0.0.1:25018/test
2016-10-13T05:56:27.500 0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:25018, reason: errno:111 Connection refused
2016-10-13T05:56:27.500 0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:25018, connection attempt failed :
  

Сначала, когда я указываю студентов базы данных, почему он пытается подключиться к тестированию? Во-вторых, я знаю, что роль UserAdmin в mongodb не предназначена для чтения / записи в базе данных с помощью UserAdmin я могу управлять только ролями пользователей. Но для управления другими пользователями мне все равно нужно войти в оболочку mongo.

Он работает, когда я отключаю авторизацию в mongod.conf, так что все в порядке, только аутентификация не работает.

Ответ №1:

Сначала, когда я указываю студентов базы данных, почему он пытается подключиться к тестированию?

Вы не указываете базу данных (students), к которой хотите подключиться здесь.

Используется --authenticationDatabase для указания базы данных, в которой был создан пользователь и которая используется для процесса аутентификации.

Вы также должны указать students в качестве опции db, к которой вы хотите подключиться. Если вы опустите его, оболочка автоматически попытается подключиться к test базе данных:

mongo students -u testAdmin -p 12345678 --authenticationDatabase students

Обратите внимание на добавление students сразу после mongo .

Это предполагает, что пользователь был создан в students базе данных (и не admin или другой). Обратите внимание, что в этом случае db объявление внутри role является избыточным:

roles: [ { role: "userAdmin", db: "students" } ]

также могло быть указано как:

roles: [ "userAdmin" ]