Я використовую один і той же рядок підключення на локальному та виробничому. Коли рядок з'єднання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, команда для додавання кореневого користувача є 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 виняток», щоб створити першого користувача, якщо ваш db вже запущений з контролем доступу ( --auth
перемикачем). Для цього вам потрібно мати доступ до локального хосту до сервера, а потім запустити:
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, мають доступ лише для створення першого користувача в базі даних адміністратора.
Ось посилання на цей розділ документів.