MongoDB 權限 驗證

  

在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 服務已經啓動成功。

在這裏我是以服務的方式啓動MongoDB服務,第一條命令是安裝服務,第二條就是啓動服務了。

服務都已經啓動了,那就剩下打開客戶端了,這個就簡單了,看代碼:

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
}
 
看到了吧,show dbs命令報異常了,再看異常的具體信息,unauthorized db:admin lock,權限驗證不通過啊!

那好,下面就進行權限驗證,這裏嘮叨一下,在進行權限驗證的時候,先退出客戶端,或者另起一個客戶端,代碼如下:

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)

命令格式:mongo [數據庫名] -u [用戶名] -p [密碼]

上面的show dbs可以執行並看到結果了。

到此,權限驗證的過程就算完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章