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