官方手冊中啟動 MongoDB ?服務時沒有任何參數,一旦客戶端連接后可以對數據庫任意操作,而且可以遠程訪問數據庫,所以推薦開發階段可以不設置任何參數,但對于生產環境還
是要仔細考慮一下安全方面的因素,而提高 MongoDB ?數據庫安全有幾個方面:?
?綁定IP內網地址訪問MongoDB服務?
?設置監聽端口?
?使用用戶名和口令登錄
綁定IP 內網地址訪問MongoDB服務
MongoDB 可以限制只允許某一特定 IP 來訪問,只要在啟動時加一個參數 bind_ip 即可,如下:?
服務端限制只有192.168.1.103這個IP可以訪問MongoDB 服務?
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103??
?
設置監聽端口?
官方默認的監聽端口是27017,為了安全起見,一般都會修改這個監聽端口,避免惡意的連
接嘗試,具體如下:?
將服務端監聽端口修改為28018?
[root@localhost bin]# ./mongod --bind_ip 192.168.1.103 --port 28018??
?
使用用戶名和口令登錄?
MongoDB默認的啟動是不驗證用戶名和密碼的,啟動MongoDB后,可以直接用MongoDB連接上來,對所有的庫具有root權限。所以啟動的時候指定參數,可以阻止客戶端的訪問和連接。
先啟用系統的登錄驗證模塊, ?只需在啟動時指定 auth ?參數即可,如
[root@localhost bin]# ./mongod --auth??
?
建立系統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") ?
本地客戶端連接,指定用戶,結果如下:??
?[root@localhost bin]# ./mongo -u root -p?
MongoDB shell version: 1.8.1?
Enter password: ?
connecting to: test?
> show collections;?
system.indexes?
system.users?
建立指定權限用戶?
MongoDB 也支持為某個特定的數據庫來設置用戶,如我們為 test 庫設一個只讀的用戶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"?
}??