gremlintv2
@gremlintv2

Какой порядок создания пользователя для удаленного доступа к mongodb?

Пробовал разными способами но никак не получается:
Создал в базе admin пользователя с правами "userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase":
use admin
db.createUser({ user: "admin" , pwd: "mypass", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})

Создал БД:
use mydb
Пробую подключаться:
mongo 127.0.0.1 --port 27017 -u "admin" --authenticationDatabase "mydb"

Ошибка:
MongoDB shell version v4.0.2
Enter password: 
connecting to: mongodb://127.0.0.1:27017/test
MongoDB server version: 4.0.2
2019-03-18T11:41:55.681+0200 E QUERY    [js] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
@(auth):6:1
@(auth):1:2
exception: login failed

Пробую подключатся:
mongo 127.0.0.1 --port 27017 -u "admin" --authenticationDatabase "admin"

Запрашивает пароль и конектится.
Конфиг:
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 127.0.0.1


Вопрос 1: по какой причине конектится к test если я явно указал mydb ?
Вопрос 2: По какой причине выбивает ошибку аутентефикации для admin при подключении к mydb ?
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
Посмотрите документацию, особенно 6 пункт: https://docs.mongodb.com/manual/tutorial/enable-au...
Обратите внимание, что юзера admin вы создаете в базе admin c ролью userAdminAnyDatabase, то есть он является администратором всех баз данных на данном сервере. Ключ "--authenticationDatabase" указывает на что, что вы авторизуетесь через базу, в которой создан пользователь. Когда вы пытаетесь исполнить
mongo 127.0.0.1 --port 27017 -u "admin" --authenticationDatabase "mydb"
mongo не может найти указанного пользвателя в бд mydb.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы