MongoDB-администратор пользователь не авторизован


Я пытаюсь добавить авторизацию к моему MongoDB.
Я делаю все это на Linux с MongoDB 2.6.1.
Мою команду mongod.файл conf находится в старом формате совместимости
(вот как это произошло с установкой).

1) я создал администратора пользователя, как описано здесь в (3)

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) Затем я редактировал mongod.conf, раскомментировав это линия

auth = true

3) Наконец я перезагрузил службу mongod и попытался войти в систему с помощью:

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) я могу подключиться, но он говорит это при подключении.

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) Теперь кажется это sa пользователь, которого я создал, не имеет никаких разрешений.

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

в чем проблема? Я повторил всю эту процедуру 3 раза и
Я думаю, что я сделал все это, как указано в документах MongoDB. Но это не работа.
Я ожидал этого sa пользователь должен быть уполномочен делать все, чтобы
затем он может создать других пользователей и предоставить им более конкретные разрешения.

9 124

9 ответов:

Я также почесывал голову вокруг той же проблемы, и все работало после того, как я установил роль root при добавлении первого пользователя admin.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
);
exit; 

полный справочник по настройке аутентификации см. В разделе шаги я собрал после нескольких часов исследований через интернет.

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

Так что предоставьте себе readWrite, и вы должны быть в порядке -

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite

возможно, быстрый пример того, как изменить текущего пользователя будет полезен кому-то. Это то, что я на самом деле ищу.

следуя совету @JohnPetrone я добавил readWrite роль моего пользователя admin grantRolesToUser

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version

вы можете попробовать: с помощью -- authenticationDatabase флаг помогает.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

Я знаю, что этот ответ приходит очень поздно в этой теме, но я надеюсь, что вы это проверите.

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

в учебнике вы предоставили пользователю userAdminAnyDatabase роль, которая в основном дает пользователю возможность управлять пользователями всех ваших баз данных. То, что вы пытались сделать с вашим пользователем, было вне его определения роли.

The root роль эта роль включена в его определение, а также readWriteAnyDatabase,dbAdminAnyDatabase и другие роли, делающие его суперпользователем (в основном потому, что вы можете делать с ним что угодно).

вы можете проверить определения ролей, чтобы увидеть, какие роли вам нужно будет предоставить пользователям для завершения определенных задачи. https://docs.mongodb.com/manual/reference/built-in-roles/ Не рекомендуется делать всех ваших пользователей супер:)

кроме того, обратите внимание, что если ваш клиент Mongo shell не удается правильно подключиться к mongod экземпляр, вы можете получить такие ошибки "отказано в разрешении".

убедитесь, что ваш клиент открывает соединение, проверив порт подключения, но также и порт, который вы используете в mongod не используется. Вы можете установить другой порт с помощью --port <port> параметр как в оболочке, так и в процессе.

Это простой вопрос.

  1. важно, что вы должны переключить целевой db не админ.

используйте yourDB

  1. проверьте аутентификацию БД с помощью

пользователи

  1. Если вы получаете {} пустой объект, который является вопросом. Вам просто нужно ввести

дБ.createUser( { пользователь: "вашего", фрд: "пароль", роли: ["readWrite", " dbAdmin" ] })

или

дБ.grantRolesToUser ('yourUser', [{ роль: "dbAdmin", db:" yourDB"}])

У меня была аналогичная проблема здесь, в среде Windows: я установил Bitnami DreamFactory, а также установил другой MongoDb, который запускается при загрузке системы. Я запускал свой MongoDbService (который был запущен без каких-либо ошибок), но я заметил, потеряв много времени, что я на самом деле подключался к сервису MongoDB Bitnami. Пожалуйста, посмотрите, если на вашем сервере нет другого экземпляра mongoDB.

Удачи!

это может быть потому, что вы не установили noAuth=true в mongodb.conf

# Turn on/off security.  Off is currently the default
noauth = true
#auth = true

после установки этого перезапустить службу с помощью

перезапуск сервиса mongod