Я использую одну и ту же строку подключения для локальной и производственной среды. Когда строка подключенияmongodb://localhost/mydb
Какое имя пользователя и пароль? Насколько безопасно хранить это так?
Я использую одну и ту же строку подключения для локальной и производственной среды. Когда строка подключенияmongodb://localhost/mydb
Какое имя пользователя и пароль? Насколько безопасно хранить это так?
Ответы:
По умолчанию mongodb не имеет включенного контроля доступа, поэтому нет пользователя или пароля по умолчанию.
Чтобы включить контроль доступа, используйте параметр командной строки --auth
или параметр файла конфигурации security.authorization.
Вы можете использовать следующую процедуру или обратиться к Включение аутентификации в документации MongoDB.
Запустите MongoDB без контроля доступа.
mongod --port 27017 --dbpath /data/db1
Подключитесь к экземпляру.
mongo --port 27017
Создайте пользователя-администратора.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Перезапустите экземпляр MongoDB с контролем доступа.
mongod --auth --port 27017 --dbpath /data/db1
Авторизуйтесь как администратор пользователя.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
В дополнение к тому, что уже упоминал @Camilo Silva, если вы хотите предоставить бесплатный доступ для создания баз данных, чтения, записи баз данных и т.д., но вы не хотите создавать корневую роль, вы можете изменить 3-й шаг следующим образом:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" } ]
}
)
Для MongoDB ранее, чем 2.6, команда для добавления пользователя root addUser
(например)
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
db.addUser
. Начиная с 2.6 и в текущей версии 3.4.x вы можете создать пользователя с помощью db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
В дополнение к ранее предоставленным ответам одним из вариантов является использование подхода «исключение localhost» для создания первого пользователя, если ваша база данных уже запущена с контролем доступа ( --auth
переключатель). Для этого вам нужно иметь доступ к серверу localhost, а затем запустить:
mongo
use admin
db.createUser(
{
user: "user_name",
pwd: "user_pass",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" }
]
})
Как указано в документации MongoDB:
Исключение localhost позволяет включить контроль доступа, а затем создать первого пользователя в системе. За исключением localhost, после включения контроля доступа подключитесь к интерфейсу localhost и создайте первого пользователя в базе данных администратора. Первый пользователь должен иметь права на создание других пользователей, например пользователя с ролью userAdmin или userAdminAnyDatabase. Подключения, использующие исключение localhost, имеют доступ только для создания первого пользователя в базе данных администратора.
Вот ссылка на этот раздел документации.