Как обезопасить MongoDB с помощью имени пользователя и пароля - PullRequest
347 голосов
/ 03 февраля 2011

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

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

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


ОБНОВЛЕНИЕ Вот решение, которое я в итоге использовал

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

Имя пользователя и пароль будут работать одинаково для mongodump и mongoexport.

Ответы [ 14 ]

2 голосов
/ 17 января 2018

Эти шаги сработали для меня:

  1. напишите mongod --port 27017 на cmd
  2. , затем подключитесь к оболочке mongo: mongo --port 27017
  3. createпользователь admin: использовать admin db.createUser ({пользователь: "myUserAdmin", pwd: "abc123", роли: [{role: "userAdminAnyDatabase", db: "admin"}]})
  4. отключить монгоshell
  5. перезапустить mongodb: mongod --auth --port 27017
  6. запустить mongo shell: mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
  7. Для аутентификации после подключения, подключите оболочку mongo к mongod: mongo --port 27017
  8. переключитесь на базу данных аутентификации: используйте admin db.auth ("myUserAdmin", "abc123"
1 голос
/ 25 апреля 2019

Вот что я сделал в Ubuntu 18.04:

$ sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
> exit
$ sudo vim /etc/mongodb.conf
auth = true
$ sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
> use lefa
> exit
1 голос
/ 22 июля 2018

Рекомендуется подключаться к mongoDB следующим образом:

  1. После первоначальной установки

    use admin

  2. Затем запустите следующий скрипт для создания пользователя-администратора

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

следующий скрипт создаст администратора для БД.

  1. войти в db.admin используя

    mongo -u YourUserName -p YourPassword admin

  2. После входа в систему можно создать N номеров базы данных с одинаковыми учетными данными администратора или другими, повторив от 1 до 3.

Это позволяет вам создать другого пользователя и пароль для другой коллекции, которую вы создаете в MongoDB

0 голосов
/ 08 июня 2017

после создания нового пользователя, пожалуйста, не забудьте grant read/write/root разрешение для пользователя.Вы можете попробовать

cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...