MongoDB 访问控制
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
Mongodb默認啟動是不帶認證的,也沒有賬號,只要連接上服務(wù)就可以進行CRUD操作。作為數(shù)據(jù)庫軟件,為了保證數(shù)據(jù)的安全,可以采用以下方法提高數(shù)據(jù)訪問的安全性:
1、綁定要訪問MongoDB服務(wù)所在的ip內(nèi)網(wǎng)地址
在啟動時添加--bind_ip參數(shù)用以限制只允許某一特定IP地址訪問MongoDB服務(wù),如:服務(wù)端限制只有58.20.3.52這個IP可以訪問MongoDB服務(wù)
客戶端訪問時需要指定服務(wù)端的IP,否則會報錯:
此時服務(wù)端和客戶端位于一臺機器,所以IP一致
2、設(shè)置監(jiān)聽端口
默認的監(jiān)聽端口是27017,我們可以修改這個監(jiān)聽端口,如:將服務(wù)器監(jiān)聽端口修改為27018
當服務(wù)端指定了端口后,客戶端訪問時需要明確指定端口才可以訪問
3、使用用戶名和口令登陸
MongoDB默認啟動是不需要用戶名和密碼的,一個MongoDB實例中的每個數(shù)據(jù)庫都可以擁有許多用戶,使用--auth開啟安全性檢查,則只有數(shù)據(jù)庫認證的用戶才能執(zhí)行讀寫操作。
1、添加用戶,使用addUser('username’, ‘password’, ‘是否只讀true|false(default)' )
在admin數(shù)據(jù)庫中的用戶被視為超級管理員,--auth開啟安全認證檢查之前一定要有個管理員帳號。
test普通數(shù)據(jù)庫中添加了兩個普通賬戶tom和tory,而tory賬戶只擁有readOnly權(quán)限。
2、開啟安全認證檢查(--auth)
啟動MongoDB服務(wù)時添加-auth參數(shù)開啟安全認證,開啟安全認證檢查之前一定要有個管理員帳號
帶有-auth參數(shù)時,必須通過認證才可以查詢數(shù)據(jù)。如果沒有加-auth參數(shù),即使配置了安全認證用戶,也不需要認證誰都可以操作。
3、用戶認證
使用--auth開啟安全性檢查之后,則只有數(shù)據(jù)庫認證的用戶才能執(zhí)行讀寫操作
db.auth('tom' ,'123')用戶認證,tom用戶具有test數(shù)據(jù)庫下的讀寫權(quán)限
tory用戶只有test數(shù)據(jù)庫下的讀權(quán)限
非特權(quán)用戶不能使用show dbs查看所有數(shù)據(jù)庫,作為超級管理員root用戶,可以對所有數(shù)據(jù)庫進行任意操作。
system.user
每個數(shù)據(jù)庫的用戶賬號都是以文檔形式存儲在system.users集合里面的,
文檔結(jié)構(gòu){'user':username, 'readOnly':true, 'pwd': password hash}。password hash是根據(jù)用戶名和密碼生成的散列。
查詢某個數(shù)據(jù)庫下的用戶db.system.users.find();
刪除某個數(shù)據(jù)庫下的所有用戶db.system.users.remove(),刪除指定用戶db.system.users.remove({'user':'用戶名'})
轉(zhuǎn)載于:https://my.oschina.net/xiaomaoandhong/blog/65270
總結(jié)
以上是生活随笔為你收集整理的MongoDB 访问控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的未来:百家争鸣的JVM
- 下一篇: 5.4 异步TCP编程(一)