mongodb 預設直接連線,無須身份驗證,如果當前機器可以公網訪問,且不注意mongodb 埠(預設 27017)的開放狀態,那麼mongodb就會產生安全風險,被利用此配置漏洞,入侵資料庫。
由於網路配置因人而異,需要根據自己實際環境進行配置,不作冗述。大致可以從以下方面禁止。
在外網機器命令列中執行
telnet
your
.machine
.open
.ip 27017
當前資料庫版本:mongodb 3.4
使用 mongod 啟動資料庫
新建終端
mongod --port 27017 --dbpath /data/db1
引數預設可以不加,若有自定義引數,才要加上,下同。
另起乙個終端,執行下列命令
mongo
--port 27017
useadmin
db.createuser(
]})
管理員建立成功,現在擁有了使用者管理員
使用者名稱:lyl
密碼:123456
然後,斷開 mongodb 連線, 關閉資料庫
兩個終端下
啟動帶訪問控制的 mongodb
新建終端
mongod --auth --port 27017 --dbpath /data/db1
現在有兩種方式進行使用者身份的驗證
第一種 (類似 mysql)
客戶端連線時,指定使用者名稱,密碼,db名稱
mongo --port 27017 -u "lyl" -p "123456" --authenticationdatabase "admin"
第二種
客戶端連線後,再進行驗證
mongo --port 27017
use admin
db.auth("adminuser", "adminpass")
// 輸出 1 表示驗證成功
過程類似建立管理員賬戶,只是 role 有所不同
use
foodb
.createuser(
, ]
})
現在我們有了乙個普通使用者
使用者名稱:******user
密碼:******pass
許可權:讀寫資料庫 foo, 唯讀資料庫 bar。
注意note
warn
use foo
表示使用者在 foo 庫中建立,就一定要 foo 庫驗證身份,即使用者的資訊跟隨隨資料庫。比如上述 ******user 雖然有 bar 庫的讀取許可權,但是一定要先在 foo 庫進行身份驗證,直接訪問會提示驗證失敗。
use foo
db.auth("******user", "******pass")
use bar
show collections
還有一點需要注意,如果 admin 庫沒有任何使用者的話,即使在其他資料庫中建立了使用者,啟用身份驗證,預設的連線方式依然會有超級許可權
生產中常用 uri 形式對資料庫進行連線
mongodb:
新增使用者名稱密碼驗證
mongodb:
mongodb設定使用者名稱密碼
參考docs.mongodb.com manual 開啟c盤的mongodb目錄,開啟cmd,執行 mongod dbpath e mongodb db logpath e mongodb log mongodb.log auth 開啟安全驗證 執行mongo use admin 建立使用者 db....
MongoDB設定使用者名稱和密碼
由於網路配置因人而異,需要根據自己實際環境進行配置,不作冗述。大致可以從以下方面禁止。在外網機器命令列中執行 telnet your.machine.open.ip 27017新建mongodb服務 mongod port 27017 dbpath data db1開啟mongodb客戶端shell...
mongodb 使用者名稱 密碼
1.不需要登入的方式啟動mongodb 2.檢視當前的庫 linux mongo show dbs 顯示admin 和 local兩個庫 3 建乙個新的庫 zcydb linux mongo use zcydb 建立了新的庫 db 顯示當前所在的庫 show dbs 顯示所有的庫,但是新建的沒有列出...