mongodb系列-访问控制
默認啟動 MongoDB 服務時沒有任何參數,可以對數據庫任意操
作,而且可以遠程訪問數據庫,所以推薦開發階段可以不設置任何參數,但對于生產環境還
是要仔細考慮一下安全方面的因素,而提高 MongoDB 數據庫安全有幾個方面:
1,綁定IP 內網地址訪問MongoDB 服務
2,設置監聽端口
3,使用用戶名和口令登錄
?
一,綁定IP內網地址訪問MongoDB:
可以在配置文件里面配置綁定的內網的IP,也可以在啟動mongod服務時加--bind_ip? 192.168.0.100這種參數:
vi /etc/mongod.conf
bind_ip=192.168.0.100
這樣客戶端訪問時需要明確指定服務端的IP,否則會報錯:
[root@localhost bin]# mongo192.168.0.100
MongoDB shell version: 2.6.7
connecting to: test
>?
?
二,設置監聽端口:
vi /etc/mongod.conf
修改成port=27018
或者啟動mongod服務直接加--port參數
./mongod --bind_ip 192.168.0.100--port 27018
服務端指定了端口后,客戶端必須要明確指定端口才可以正常訪問
[root@localhost bin]# mongo192.168.0.100:27018
MongoDB shell version: 2.6.7
connecting to: test
>?
?
三,使用用戶名和口令登錄:
MongoDB 都默認有一個 admin 數據庫(默認是空的),而 admin.system.users 中將會保存比在其它數據庫中設置的用戶權限更大的用戶信息。
注意:當 admin.system.users 中沒有添加任何用戶時,即使 MongoDB 啟動時添加了 --auth參數,如果在除 admin 數據庫中添加了用戶,此時不進行任何認證依然可以使用任何操作,直到知道你在 admin.system.users 中添加了一個用戶。
在低版本中增加用戶的命令是:addUser(),高版本一般用createUser():
>?db.createUser({user:"jack",pwd:"123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
??? "user" : "jack",
??? "roles" : [
?????? {
?????????? "role" : "userAdminAnyDatabase",
?????????? "db" : "admin"
?????? }
??? ]
}
>?
開啟conf文件中的auth功能,設置用戶和密碼之后,再執行show dbs就會報錯:
> show dbs;
2015-02-13T17:40:59.128+0800listDatabases failed:{
??? "ok" : 0,
??? "errmsg" : "not authorized on admin to executecommand { listDatabases: 1.0 }",
??? "code" : 13
} atsrc/mongo/shell/mongo.js:47
?
用db.auth()認證之后就可以執行了:
?
> use admin
switched to db admin
> db.auth('jack','123')
1
> show dbs
admin? 0.078GB
local? 0.078GB
>
來源:http://blog.itpub.net/29806344/viewspace-1436692/
總結
以上是生活随笔為你收集整理的mongodb系列-访问控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb性能分析方法:explai
- 下一篇: mongoDB3.4主从复制实现(第一种