Как Добавить пользователя admin в Mongo в 2.6?

я обновился с 2.4 до 2.6, и аутентификация сломалась. в этом уроке кажется довольно простым, но я не могу войти в свою собственную базу данных. Моя ситуация довольно проста, у меня есть один сервер Mongo и нужна одна комбинация user/pwd для подключения.

сначала я подключаюсь через исключение localhost, как упоминалось. Затем я создаю пользователя admin Как предложено:

use admin
db.createUser(
  {
    user: "myadmin",
    pwd: "mysecret",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

Теперь пришло время добавить новых пользователей, чтобы проверить себя, я выхожу из системы оболочка. Теперь, когда я набираю "монго", он терпит неудачу. Это работало, но хорошо, он не видит пароль пользователя, и я думаю, что исключение localhost больше не существует, поэтому я следую инструкциям, изложенным здесь:

mongo --port 27017 -u myadmin -p mysecret --authenticationDatabase admin

а я:

MongoDB shell version: 2.6.0
connecting to: 127.0.0.1:27017/test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
>

любая идея о том, как:

  1. настройка Mongo 2.6, поэтому я могу легко входить и выходить из оболочки управления базами данных (я бы подумал, что это " системный пользователь администратор")

  2. включить подключение пользователя с удаленного клиента? (Только сторона монго, не нужна помощь с iptables ...)

спасибо!

3 ответов


по-видимому, "системный администратор пользователя" недостаточно. Создать пользователя root:

> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]})

затем добавьте пользователя базы данных:

> use some_db
> db.createUser(
    {
      user: "mongouser",
      pwd: "someothersecret",
      roles: ["readWrite"]
    }
)

подробнее о в этом суть. Комментарии к gist и лучшие ответы на так приветствуются-я не sys admin


1) роль, которую вы назначаете пользователю admin-userAdminAnyDatabase - не имеет неограниченных прав. Это просто роль, которая позволяет создавать и управлять пользователями в любой базе данных. По-видимому, по умолчанию он ограничен выполнением определенных команд, которые не связаны напрямую с управлением пользователями базы данных (например, получение предупреждений о запуске из журнала, запрос состояния сервера и т. д.).

вместо этого вы можете использовать роль "root", как предлагает Тони. Если вы собираетесь используйте учетную запись root для настройки и управления, а затем просто имейте несколько базовых привилегированных учетных записей чтения/записи, разговаривающих с базой данных, это, вероятно, имеет наибольший смысл.

2) В общем, подключение на стороне клиента просто требует вызова дБ.функция authenticate () после подключения из кода клиента. Существуют различные способы сделать это в зависимости от водителя/язык, который вы используете для клиента. Узел.код драйвера js довольно типичен: http://mongodb.github.io/node-mongodb-native/api-generated/db.html#authenticate


даже после следования методу @Tony я получал

`com.mongodb.CommandFailureException:`

добавлять

compile 'org.mongodb:mongo-java-driver:2.13.1'

в разделе зависимостей в BuildConfig.groovy однако Исправлена проблема.