2016-12-02 111 views
0

我有一個Node JS程序,它使用Mongo DB作爲我的dbs。現在......每個人都可以訪問mongo shell而不會有任何問題。Mongodb身份驗證外殼/控制檯

這是它的意思?我想讓mongo shell遠離任何其他人,即在使用shell之前必須進行身份驗證。原因是我不希望人們刪除數據庫中的表,並通過控制檯插入/修改文檔。

有沒有辦法做到這一點?我看了一下https://docs.mongodb.com/manual/security/但是我不確定如何實現這個到我的Node Js程序(保密密碼)。

任何幫助,將不勝感激。由於

回答

2

幾個解決方案:

  • 限制訪問你的數據庫只有所需的IP地址。如果您的應用程序和數據庫位於同一臺計算機上,那麼只有127.0.0.1 +也許是您的PC,因此您可以在GUI中運行查詢。

  • 強制認證,如this link所示,使用強密碼。 爲了讓密碼在你的Node程序中保持「祕密」,我把它理解爲「非硬編碼」,把它變成一個env變量,並在運行時將它提供給節點,或者將它寫入一個不存在於你的repo中的文件.gitignore也可以)。

有了一個有效的用戶名/密碼,這裏是如何進行身份驗證使用節點到MongoDB的:

一個MongoDB的地址有7個部分組成:

protocol:"mongodb://", 
    host:"localhost", 
    user: "user", 
    password : "password", 
    options: "?authMechanism=MONGODB-CR", 
    port:"27017", 
    db:"db_name" 

所有一起給一個字符串,如:

mongodb://user:[email protected]:27017/db_name?authMechanism=MONGODB-CR,

這應該足夠了節點使用本地Mongo驅動程序進行連接。

而在殼來驗證:

使用DB_NAME

db.auth( 「用戶」, 「密碼」)

,或者直接在連接:

mongo -u "user" -p "password" --authenticationDatabase "db_name"