MongoDB 設定使用者名稱密碼登入

2021-08-20 13:45:29 字數 1754 閱讀 7954

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 顯示所有的庫,但是新建的沒有列出...