要直接啓動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
和連接腳本的路徑,而不是依賴隱式的每用戶配置。
對不起,如果這不明確,但我不能使用一個解決方案,它需要'localhost'上的一個不安全的數據庫。這種解決方案不能一概而論,因爲它阻止你在配置了'mongob'的計算機上使用它,以防止隨機用戶使用'test'數據庫。 – binki
此外,你甚至測試過嗎? ['connect()'](https://docs.mongodb.com/manual/reference/method/connect/)的文檔聲明'mongodb://'URI不被接受,我記得在嘗試時出錯在我上個週末對自己的問題進行探索期間。 – binki
我不知道你從文檔中得到了什麼。它清楚地表明,url參數可以是連接字符串。您也可以在連接字符串中使用用戶名和密碼。是的,我測試過它,是的它的工作原理。 – tfogo