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