官方手冊(cè)中啟動(dòng) MongoDB ?服務(wù)時(shí)沒有任何參數(shù),一旦客戶端連接后可以對(duì)數(shù)據(jù)庫(kù)任意操作,而且可以遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù),所以推薦開發(fā)階段可以不設(shè)置任何參數(shù),但對(duì)于生產(chǎn)環(huán)境還
是要仔細(xì)考慮一下安全方面的因素,而提高 MongoDB ?數(shù)據(jù)庫(kù)安全有幾個(gè)方面:?
?綁定IP內(nèi)網(wǎng)地址訪問(wèn)MongoDB服務(wù)?
?設(shè)置監(jiān)聽端口?
?使用用戶名和口令登錄
綁定IP 內(nèi)網(wǎng)地址訪問(wèn)MongoDB服務(wù)
MongoDB 可以限制只允許某一特定 IP 來(lái)訪問(wèn),只要在啟動(dòng)時(shí)加一個(gè)參數(shù) bind_ip 即可,如下:?
服務(wù)端限制只有192.168.1.103這個(gè)IP可以訪問(wèn)MongoDB 服務(wù)?
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103??
?
設(shè)置監(jiān)聽端口?
官方默認(rèn)的監(jiān)聽端口是27017,為了安全起見,一般都會(huì)修改這個(gè)監(jiān)聽端口,避免惡意的連
接嘗試,具體如下:?
將服務(wù)端監(jiān)聽端口修改為28018?
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103 --port 28018??
?
使用用戶名和口令登錄?
MongoDB默認(rèn)的啟動(dòng)是不驗(yàn)證用戶名和密碼的,啟動(dòng)MongoDB后,可以直接用MongoDB連接上來(lái),對(duì)所有的庫(kù)具有root權(quán)限。所以啟動(dòng)的時(shí)候指定參數(shù),可以阻止客戶端的訪問(wèn)和連接。
先啟用系統(tǒng)的登錄驗(yàn)證模塊, ?只需在啟動(dòng)時(shí)指定 auth ?參數(shù)即可,如
[root@localhost bin]# ./mongod --auth??
?
建立系統(tǒng)root帳號(hào)
在admin庫(kù)中新添一個(gè)用戶root:??
[root@localhost bin]# ./mongo?
MongoDB shell version: 1.8.1?
connecting to: test?
> db.addUser("root","111")?
{?
? ? ? ? "user" : "root",?
? ? ? ? "readOnly" : false,?
? ? ? ? "pwd" : "e54950178e2fa777b1d174e9b106b6ab"?
}?
> db.auth("root","111") ?
本地客戶端連接,指定用戶,結(jié)果如下:??
?[root@localhost bin]# ./mongo -u root -p?
MongoDB shell version: 1.8.1?
Enter password: ?
connecting to: test?
> show collections;?
system.indexes?
system.users?
建立指定權(quán)限用戶?
MongoDB 也支持為某個(gè)特定的數(shù)據(jù)庫(kù)來(lái)設(shè)置用戶,如我們?yōu)?test 庫(kù)設(shè)一個(gè)只讀的用戶user_reader:??
[root@localhost bin]# ./mongo -u root -p?
MongoDB shell version: 1.8.1?
Enter password: ?
connecting to: test?
> show collections;?
system.indexes?
system.users?
> use test?
switched to db test?
> db.addUser("user_reader", "user_pwd", true)?
{?
? ? ? ? "user" : "user_reader",?
? ? ? ? "readOnly" : true,?
? ? ? ? "pwd" : "0809760bb61ee027199e513c5ecdedc6"?
}??