Реплика MongoDB 2.4 установлена с авторизацией
Как настроить правильную авторизацию для mongodb 2.4.1. Кажется, мои настройки не работают. Конфигурация членов реплики:
dbpath = /vol/data/mongodb/
# logfile
logpath = /var/log/mongodb/mongodb.log
logappend = true
# socket
bind_ip = 0.0.0.0
port = 27018
# replication
replSet = <%= hostname[14,4] %>
# authentication
keyFile = /etc/mongodb.pass
# turn off legacy privilege mode
setParameter = supportCompatibilityFormPrivilegeDocuments=false
setParameter = textSearchEnabled=false
# turn off authorization
auth = true
После добавления авторизации пользователя:
> use admin
> db.addUser( { user: "admin", pwd: "xxx", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase" ] } )
Я не могу получить доступ к командам rs.*.
> use admin
> db.auth('admin','xxx')
1
> rs.status()
{ "ok" : 0, "errmsg" : "unauthorized" }
2 ответа
Я тоже имел дело с такой же проблемой. У меня есть решение для этого.
Отключить аутентификацию
1. Создайте пользователя с привилегиями root
Root privilege yields readWrite access to database while userAdminAnyDatabase role doesn't.
use admin
db.createUser( {
user: "root",
pwd: "pass",
roles: [ { role: "root", db: "admin" } ]
});
Включите аутентификацию
2. Войдите с пользователем root
mongo -u root --authenticationDatabase admin -p
Затем вы можете выполнять свои команды.
Надеюсь это поможет:)
Я думаю, что вам нужно использовать keyFile, если у вас есть репликация.
Взято с http://docs.mongodb.org/manual/tutorial/enable-authentication/:
Включите аутентификацию, используя настройки auth или keyFile. Используйте auth для автономных экземпляров и keyFile с наборами реплик и сегментированными кластерами. keyFile подразумевает аутентификацию и позволяет членам развертывания MongoDB проводить внутреннюю аутентификацию.