Как защитить MongoDB с именем пользователя и паролем
Я хочу настроить аутентификацию имени пользователя и пароля для моего экземпляра MongoDB, чтобы любой удаленный доступ запрашивал имя пользователя и пароль. Я попробовал учебник с сайта MongoDB и сделал следующее:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
После этого я вышел и снова побежал монго. И мне не нужен пароль для доступа к нему. Даже если я подключаюсь к базе данных удаленно, я не запрашиваю имя пользователя и пароль.
ОБНОВЛЕНИЕ. Вот решение, в результате получившее
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
.
Ответы
Ответ 1
Вам нужно запустить mongod
с помощью параметра --auth
после настройки пользователя.
С сайта MongoDB:
Запустите базу данных (процесс mongod) с помощью параметра --auth
, чтобы включить безопасность. Вы должны либо добавить пользователя в админ db до запуск сервера с помощью --auth
или добавление первого пользователя из локальный интерфейс.
Аутентификация MongoDB
Ответ 2
Вот так много сложных/запутанных ответов здесь.
Это значение v3.4.
Краткий ответ.
1) Запустите MongoDB без контроля доступа.
mongod --dbpath /data/db
2) Подключитесь к экземпляру.
mongo
3) Создайте пользователя.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Остановите экземпляр MongoDB и запустите его снова с помощью контроля доступа.
mongod --auth --dbpath /data/db
5) Подключитесь и авторизуйтесь как пользователь.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Длинный ответ: прочитайте это, если вы хотите правильно понять.
Это действительно просто. Я опустил следующий ниже https://docs.mongodb.com/manual/tutorial/enable-authentication/
Если вы хотите узнать больше о том, какие роли действительно читают здесь: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Запустите MongoDB без контроля доступа.
mongod --dbpath /data/db
2) Подключитесь к экземпляру.
mongo
3) Создайте пользователя. Следующее создает администратор пользователя в базе данных проверки admin
. Пользователь dbOwner
в базе some_db
и НЕ над базой admin
, это важно запомнить.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Или, если вы хотите создать администратора, который является администратором любой базы данных:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Остановите экземпляр MongoDB и запустите его снова с помощью контроля доступа.
mongod --auth --dbpath /data/db
5) Подключитесь и авторизуйтесь в качестве администратора пользователя к базе данных аутентификации admin
, а не к базе данных аутентификации some_db
. Администратор пользователя был создан в базе данных проверки admin
, пользователь не существует в базе данных аутентификации some_db
.
use admin
db.auth("myDbOwner", "abc123")
Теперь вы аутентифицированы как dbOwner
по базе some_db
. Итак, теперь, если вы хотите читать/писать/делать материал напрямую в базу данных some_db
, вы можете изменить его.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Подробнее о ролях: https://docs.mongodb.com/manual/reference/built-in-roles/
Если вы хотите, чтобы дополнительные пользователи, которые не являются администраторами пользователей и которые являются нормальными пользователями, продолжают читать ниже.
6) Создайте нормального пользователя. Этот пользователь будет создан в базе данных аутентификации some_db
ниже.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Выйдите из оболочки mongo, повторно подключитесь, выполните аутентификацию как пользователь.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Ответ 3
Сначала не комментируйте строку, начинающуюся с #auth=true
в файле конфигурации mongod (путь по умолчанию /etc/mongo.conf
). Это позволит проверить подлинность mongodb.
Затем перезапустите mongodb: sudo service mongod restart
Ответ 4
Этот ответ для Mongo 3.2.1
Reference
Терминал 1:
$ mongod --auth
Терминал 2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
если вы хотите добавить без ролей (необязательно):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
проверить подлинность или нет:
db.auth("admin_name", "1234")
он должен дать вам:
1
else:
Error: Authentication failed.
0
Ответ 5
Вот код javascript для добавления пользователей.
-
Запустите mongod
с помощью --auth = true
-
Получите доступ к базе данных администратора из оболочки mongo и передайте файл javascript.
mongo admin "Filename.js"
"Filename.js"
// Adding admin user
db.addUser("admin_username", " admin_password");
// Authenticate admin user
db.auth("admin_username ", " admin_password ");
// use database code from java script
db = db.getSiblingDB("newDatabase");
// Adding newDatabase database user
db.addUser("database_username ", " database_ password ");
-
Теперь добавление пользователя завершено, мы можем проверить доступ к базе данных из оболочки mongo
Ответ 6
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Отредактируйте файл настроек mongo;
sudo nano /etc/mongod.conf
Добавьте строку:
security.authorization : enabled
Перезапустите службу
sudo service mongod restart
Привет
Ответ 7
Сначала запустите mongoDB на терминале, используя
mongod
теперь запускаем оболочку монго, используя следующие команды
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Перезапустите экземпляр MongoDB с контролем доступа.
mongod --auth
Аутентифицируйте себя из командной строки, используя
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Я прочитал это из
https://docs.mongodb.com/manual/tutorial/enable-authentication/
Ответ 8
Вам нужно переключиться на базу данных, к которой вы хотите подключить пользователя (а не на базу данных администратора)...
use mydatabase
Смотрите этот пост для получения дополнительной помощи... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
Ответ 9
Создание пользователя с паролем для конкретной базы данных для обеспечения доступа к базе данных:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
Ответ 10
Выполните следующие шаги в порядке
- Создайте пользователя с помощью CLI
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
- Включите аутентификацию, чем она отличается, в зависимости от вашей ОС, если вы используете Windows, вы можете просто
mongod --auth
, в случае с Linux вы можете отредактировать файл /etc/mongod.conf
, добавив security.authorization : enabled
, а затем перезапустить службу mongd
- Для подключения через cli
mongo -u "admin" -p "admin123" --authenticationDatabase "admin"
. Что это
Вы можете проверить этот пост, чтобы узнать больше и научиться подключаться к нему с помощью mongoose.
Ответ 11
Эти шаги сработали на меня:
- напишите mongod --port 27017 на cmd
- затем подключитесь к оболочке монго: монго --port 27017
- создать пользователя admin:
использовать админ
db.createUser(
{
пользователь: "myUserAdmin",
pwd: "abc123",
role: [{role: "userAdminAnyDatabase", db: "admin"}]
}
)
- отключить оболочку монго
- перезапустите mongodb: mongod --auth --port 27017
- начать монго оболочки:
mongo --port 27017 -u "myUserAdmin" -p "abc123" --auth enticationDatabase "admin"
- Для проверки подлинности после подключения, подключите оболочку mongo к mongod:
монго --port 27017
- переключиться на базу данных аутентификации:
использовать админ
db.auth("myUserAdmin", "abc123"
Ответ 12
после создания нового пользователя, не забудьте оставить grant
read/write/root
разрешение для пользователя. вы можете попробовать
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
Ответ 13
Рекомендуется подключаться к mongoDB следующим образом:
После первоначальной установки
use admin
Затем запустите следующий скрипт для создания пользователя-администратора
db.createUser(
{
user: "YourUserName",
pwd: "YourPassword",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})
следующий скрипт создаст администратора для БД.
войти в db.admin используя
mongo -u YourUserName -p YourPassword admin
После входа в систему вы можете создать N номеров базы данных с одинаковыми учетными данными администратора или другими, повторив шаги от 1 до 3.
Это позволяет вам создать другого пользователя и пароль для другой коллекции, которую вы создаете в MongoDB
Ответ 14
Это то, что я сделал в 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
Ответ 15
Вы можете изменить /etc/mongod.conf
.
Перед
#security:
После
security:
authorization: "enabled"
Тогда sudo service mongod restart