Как Добавить пользователя 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" }
>
любая идея о том, как:
настройка Mongo 2.6, поэтому я могу легко входить и выходить из оболочки управления базами данных (я бы подумал, что это " системный пользователь администратор")
включить подключение пользователя с удаленного клиента? (Только сторона монго, не нужна помощь с 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 однако Исправлена проблема.