2017-10-21 85 views
0

我找不到任何地方爲mongo CLI設置默認連接URL。我希望能夠指定一個特定的用戶名/密碼/主機名/數據庫,它們都可以被指定爲一個URL。但是,我希望能夠在shell中輸入mongo而不是mongo "mongodb://…"如何設置mongo CLI的默認連接URL?

我也不希望密碼出現在/proc/«PID»/cmdline中,但將它放在我的主目錄中的dotfile中對我來說是完全沒問題的。

~/.mongorc.js不允許指定默認連接字符串。但我期望這樣的選項可用,因爲mysql CLI支持~/.my.cnf,它允許您指定用戶名/密碼/主機名/數據庫。那麼,這是mongodb的位置?

編輯:該解決方案具有即使在mongodblocalhost完全固定工作(應要求,我沒有不安全的地方test數據庫以爲這不言而喻)。

回答

0

您可以在~/.mongorc.js中運行mongo shell命令。所以,你可以只運行connect方法在~/.mongorc.js

db = connect("mongodb://username:[email protected]:27017/myDatabase") 

當你運行mongo它會首先連接到本地主機,然後連接到傳遞給connect方法的數據庫。

一個MongoDB服務器必須在本地主機上運行,​​否則在嘗試連接到另一個數據庫之前,mongo shell會報錯並退出。

運行mongo --nodb需要在本地主機上連接,然後才能連接到~/.mongorc.js中定義的任何內容。

+0

對不起,如果這不明確,但我不能使用一個解決方案,它需要'localhost'上的一個不安全的數據庫。這種解決方案不能一概而論,因爲它阻止你在配置了'mongob'的計算機上使用它,以防止隨機用戶使用'test'數據庫。 – binki

+0

此外,你甚至測試過嗎? ['connect()'](https://docs.mongodb.com/manual/reference/method/connect/)的文檔聲明'mongodb://'URI不被接受,我記得在嘗試時出錯在我上個週末對自己的問題進行探索期間。 – binki

+0

我不知道你從文檔中得到了什麼。它清楚地表明,url參數可以是連接字符串。您也可以在連接字符串中使用用戶名和密碼。是的,我測試過它,是的它的工作原理。 – tfogo

0

要直接啓動mongo針對特定的主機名/數據庫/用戶名/密碼,而不提示輸入密碼,不通過CLI傳遞密碼,也不需要不安全的數據庫在mongodb://localhost/test,您可以使用此技術。寫a script file which does the connection for you然後launch mongo with the appropriate arguments。例如:

~/.mongo-do-auth.js

// https://docs.mongodb.com/manual/reference/program/mongo/#cmdoption-nodb 
// https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#mongo-shell-new-connections 
// 
// Run this with: 
// 
//  mongo --nodb --shell ~/.mongo-do-auth.js 
db = connect('localhost/admin', 'root', 'asdf123'); 

然後,只需從CLI啓動它獲得一個交互式會話:

sam ~ # mongo --nodb --shell ~/.mongo-do-auth.js 
MongoDB shell version: 2.6.12 
type "help" for help 
connecting to: localhost/admin 
> quit() 

或者,非交互運行腳本,只需刪除--shell和追加你的腳本。考慮一個腳本:

s2.js

print('connected to database ' + db); 

運行:

sam ~ # mongo --nodb ~/.mongo-do-auth.js ~/s2.js 
MongoDB shell version: 2.6.12 
loading file: /root/.mongo-do-auth.js 
connecting to: localhost/admin 
loading file: /root/s2.js 
connected to database admin 

然而,這需要大量的工作,並與參數調用mongo。看起來這是mongo的一個限制,因爲沒有人提出任何可以像mysql CLI客戶端~/.my.cnf一樣順利工作的替代方案。這意味着直接調用mongo的所有shell腳本都需要允許用戶通過--nodb和連接腳本的路徑,而不是依賴隱式的每用戶配置。