Я пытаюсь установить пароль для mongodb, чтобы предотвратить доступ к db с пустым входом и проходом (устанавливается по умолчанию).
Я сервер statong mongo:
sudo ./mongod
Начальный клиент:
./mongo
Установка пароля:
use admin
db.addUser("root", "root")
exit
Вывод:
MongoDB shell version: 2.2.0
connecting to: test
> use admin
switched to db admin
> db.addUser("root", "root")
{
"user" : "root",
"readOnly" : false,
"pwd" : "2a8025f0885adad5a8ce0044070032b3",
"_id" : ObjectId("50c90b94e28c41a388104f64")
}
> exit
Hoever, wheh Я пытаюсь auth с пустыми учетными данными (я использую mViever admin UI), он все еще работает. В противном случае доступ с root/root невозможен. Что я делаю неправильно?
Также пытался запустить сервер mongo с параметром -auth, тот же результат:
./mongod -auth
UPD: после запуска с параметром -auth невозможно войти с любым пропуском. Получение:
Thu Dec 13 03:27:38 uncaught exception: error {
"$err" : "unauthorized db:admin ns:admin.system.users lock type:1 client:127.0.0.1",
"code" : 10057
}
Обновление: Я не знаю, что происходит...
> db.auth("root","root");
1
> ^C
bye
Он может войти в систему. Пусть перезапустите ./mongod --auth
и ./mongo
:
MacBook-Pro-Ilya:bin ilyarusanen$ ./mongo
MongoDB shell version: 2.2.2
connecting to: test
> db.auth("root","root")
Error: { errmsg: "auth fails", ok: 0.0 }
0
> db.test.insert({"yeah":"2342"})
Fri Dec 14 08:52:05 uncaught exception: getlasterror failed: { "errmsg" : "need to login", "ok" : 0 }
> use admin
switched to db admin
> db.addUser("root","root")
Fri Dec 14 08:52:14 uncaught exception: error {
"$err" : "unauthorized db:admin ns:admin.system.users lock type:1 client:127.0.0.1",
"code" : 10057
}
> db.auth("root","root")
1
Почему сначала он может войти? Почему после перезапуска монго не может войти? И почему после FAILED попытки addUser, он становится доступным для входа? Спасибо.
UPDATE2: MongoHub кажется auth ok. Однако из NodeJS я все еще не могу войти в систему: я использую такой код:
mongo_db.open(function(err,data){
if(data){
data.authenticate("root", "root",function(err2,data2){
if(data2){
console.log("Database opened");
}
else{
console.log(err2);
}
});
} else {
console.log(err);
}
});
И я получаю:
{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }
Но помните, что MongoHub с одинаковыми учетными данными работает нормально.