Как я могу войти в Mongo в качестве суперпользователя или перезагрузить пользователей?


29

Я играл с разрешениями и заблокировал себя из базы данных Монго. Я почти уверен, что сделал это, пытаясь явно добавить доступ к базе данных, но вместо этого я переписал только разрешение на доступ к базе данных. Поэтому я фактически заблокирован в базе данных Mongo, и все, что я прочитал, говорит мне, как создать суперпользователя, если у меня есть привилегия добавления пользователя. Сейчас я не думаю, что у меня есть пользователи с такой привилегией. Есть ли способ войти в базу данных как весь доступ? Я владею сервером и имею root-доступ.

Ответы:


38

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

  1. Остановите ваш экземпляр MongoDB
  2. Удалите параметры --auth и / или --keyfile из конфигурации MongoDB, чтобы отключить аутентификацию
  3. Запустите экземпляр без аутентификации
  4. Редактировать пользователей по мере необходимости
  5. Перезапустите экземпляр с включенной аутентификацией.

Удаление auth действительно было недостаточно, спасибо!
Андрей

14

У меня была похожая проблема, когда я создавал пользователя без предварительного добавления суперпользователя. Следующие шаги помогли решить проблему:

  1. Откройте файл конфигурации MongoDB с помощью sudo( sudo vi mongodb.conf).
    Файл можно найти в /etc/папке.
  2. Комментарий "auth = true".
  3. Остановите службу MongoDB ( sudo service mongod stop)
  4. Запустите сервис MongoDB ( sudo service mongod start)
  5. Затем создайте суперпользователя «root» с помощью следующей команды:

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

    Для справки https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Вернитесь и раскомментируйте "auth=true". Остановите и запустите / перезапустите службу mongodb.


Я не могу отблагодарить тебя достаточно. Я застрял, пытаясь понять это, когда я загрузил проект на сервер разработки. Спасибо большое! :)
Woppi

То же самое. Сообщения об ошибках сервера поразительно бесполезны на этом. Спасибо!
Том

7

Если вы используете набор реплик сkeyfile

Безопасность между членами набора реплик с использованием внутренней аутентификации

Keyfile используется для аутентификации в репликации.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

Вы можете использовать эту команду для входа в систему с правами администратора на mongod:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Послесловие вы можете создавать или изменять вашего администратора.

Внутренняя роль

__systemMongoDB назначает эту роль пользовательским объектам, которые представляют элементы кластера, таким как члены набора реплик и экземпляры mongos. Роль дает право ее владельцу предпринимать какие-либо действия против любого объекта в базе данных.

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


где ты нашел эту информацию?
октоэдр

2

Проверьте ответы на этот вопрос, они могут помочь

/programming/20117104/mongodb-root-user

В основном, если у вас все еще есть доступ к серверу, вы можете получить доступ к Adminбазе данных.

На этой странице есть больше http://docs.mongodb.org/v2.4/reference/user-privileges/

Обратите внимание, что версия 2.6 меняет то, как это работает полностью. Для версии 2.6 вам нужно больше времени проводить с http://docs.mongodb.org/manual/security/


1
Как упоминалось в сообщении, это единственная информация, которую я смог найти. У меня нет прав для этого
Тони

0

Вы должны остановить Mongo, удалить файлы администратора, а затем запустить Mongo

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
Это разрушает базу данных административных пользователей и позволяет получить доступ через «localHostExcetption». Это не хороший способ администрирования пользователей в случае возникновения проблем.
daveh
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.