Реплика 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 проводить внутреннюю аутентификацию.

Другие вопросы по тегам