在MongoDB中,服務啓動默認是沒有權限驗證的,就安全性方面來說,這肯定是不行的,所以需要加上權限驗證。
既然是要進行權限驗證,那肯定是得有用戶的吧,所以權限驗證的第一步就是給MongoDB庫添加用戶。
啓動MongoDB服務端,然後啓動MongoDB客戶端,在客戶端使用命令給MongoDB庫添加用戶,看代碼:
> db.addUser("sa","123");
{
"user" : "sa",
"readOnly" : false,
"pwd" : "f7559cfe0bc0a305f82c0d83664538fd"
}
小知識:在admin庫裏面添加用戶是全局的,也就是說在admin中添加用戶,在其他庫裏面也是適用的。
要給MongoDB的服務器端添加權限驗證,需要在啓動MongoDB的服務的時候添加--auth參數,代碼如下:
d:\mongodb\bin>mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log --logappend --serviceName MongoDB --auth --install
all output going to: d:\mongodb\log\mongodb.log
Creating service MongoDB.
Service creation successful.
Service can be started from the command line via 'net start "MongoDB"'.
d:\mongodb\bin>net start "MongoDB"
Mongo DB 服務正在啓動 .
Mongo DB 服務已經啓動成功。
服務都已經啓動了,那就剩下打開客戶端了,這個就簡單了,看代碼:
d:\mongodb\bin>mongo
MongoDB shell version: 1.8.2
connecting to: test
> show dbs;
Mon Oct 24 21:54:13 uncaught exception: listDatabases failed:{
"assertion" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
"assertionCode" : 10057,
"errmsg" : "db assertion failure",
"ok" : 0
}
那好,下面就進行權限驗證,這裏嘮叨一下,在進行權限驗證的時候,先退出客戶端,或者另起一個客戶端,代碼如下:
d:\mongodb\bin>mongo admin -u sa -p 123
MongoDB shell version: 1.8.2
connecting to: admin
> show dbs;
admin 0.078125GB
local (empty)
test (empty)
上面的show dbs可以執行並看到結果了。
到此,權限驗證的過程就算完成了。