Подтвердить что ты не робот

MongoDB - пользователь admin не авторизовался

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

1) Я создал пользователя admin, как описано здесь в (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, который я создал, вообще не имеет прав.

[email protected]:~# 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 будет разрешено делать что-либо, чтобы он может затем создавать других пользователей и предоставлять им более конкретные разрешения.

4b9b3361

Ответ 1

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

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

Если вы уже создали пользователя с правами admin, вы можете изменить роль следующим образом:

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

Для получения полной информации о настройке аутентификации см. Шаги, которые я скомпилировал после нескольких часов исследований в Интернете.

Ответ 2

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

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

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

Ответ 3

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

Следуя советам @JohnPetrone, я добавил readWrite роль моего администратора с помощью grantRolesToUser.

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

Ответ 4

Вы можете попробовать: использование флажка --authenticationDatabase.

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

Ответ 5

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

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

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

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

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

Ответ 6

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

Удачи!

Ответ 7

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

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

Ответ 8

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

  1. Важно, чтобы вы переключили целевой db, а не admin.

использовать свой DB

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

показать пользователям

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

db.createUser({пользователь: "yourUser", pwd: "пароль", роли: ["readWrite", "dbAdmin"]})

или же

db.grantRolesToUser('yourUser', [{role: "dbAdmin", db: "yourDB"}])

Ответ 9

У меня была эта проблема, потому что имя хоста в моем MongoDB Compass указывало на admin вместо моего проекта. Исправлено добавлением /projectname после имени хоста :) Попробуйте это:

  1. Выберите свой проект на веб-сайте MongoDB atlas
  2. Подключение/Подключение с MongoDB Compass
  3. Скачать компас/выбрать ОС
  4. Я использовал Компас 1.12 или позже
  5. Скопируйте строку подключения под Компас 1.12 или выше.
  6. Открыть MongoDB Compass/Подключиться (вверху слева)/Подключиться к
  7. Строка подключения обнаружена/Да/
  8. Добавьте имя вашего проекта после имени хоста: cluster9-foodie.mongodb.net/имя проекта
  9. Подключите и протестировал API с POSTMAN.
  10. Добиться успеха.

Используйте ту же строку подключения в вашем коде:

  1. До:
    • mongodb + srv://имя проекта: пароль @cluster9-foodie.mongodb.net/admin
  2. После:
    • mongodb + srv://имя проекта: пароль @cluster9-foodie.mongodb.net/имя проекта

Удачи.

Ответ 10

использовать mydb
db.createUser({пользователь: "тест", pwd: "секрет", роли: ["readWrite", "dbAdmin"], passwordDigestor: "сервер"})

Ответ 11

У меня была такая же проблема, и в моем случае она была вызвана переменной mongodb_security_authorization, для которой было установлено значение "включено", я исправил ее, изменив это:

mongodb_security_authorization: "enabled"

к этому:

mongodb_security_authorization: "disabled"

Ответ 12

Согласился с тем, что вам необходимо пройти аутентификацию на уровне администратора базы данных, и ему нужна как минимум роль с правильными привилегиями, которая позволит избежать "исключения локального хоста" из БД (это для локального размещения mongoDB), хотя у вас все есть на месте и до сих пор получение неавторизованных исключений почти для каждой команды при доступе к mongoDB, который был создан с использованием Mongo Atlas, и вот где вы можете узнать причину, почему:

https://dba.stackexchange.com/questions/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tier-cluster?newreg=471a9a26108243d78d4ca74a87e7a115

и также проверьте это, если вы размещали mongoDB на Монго Атласе:

https://docs.atlas.mongodb.com/unsupported-commands/

Ответ 13

У меня была та же проблема. Во время работы mongod я достал --auth, и он предоставил временное решение.

Ответ 14

Use Admin :
    use admin

Create a super user : 

    db.createUser(
    {
    user: "master",
    pwd: "[email protected]",
    roles: [ 
    { 
    role: "readWriteAnyDatabase", 
    db: "admin" 
    }, 
    {
    "role" : "dbAdminAnyDatabase",
    "db" : "admin"
    },
    {
    "role" : "clusterAdmin",
    "db" : "admin"
    },
    "userAdminAnyDatabase" 
    ]
    }
    )

Ответ 15

Это может быть из-за того, что вы не установили noAuth = true в файле mongodb.conf

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

После настройки этого перезапуска служба, использующая

перезагрузка службы mongod