如何为mongo CLI设置默认连接URL?

时间:2017-10-21 21:11:25

标签: mongodb

我找不到任何地方为mongo CLI设置默认连接URL。我希望能够指定特定的用户名/密码/主机名/数据库,这些都可以指定为URL。但是,我希望能够在shell中输入mongo而不是mongo "mongodb://…"

我也不希望密码显示在/proc/«PID»/cmdline中,但是在我的主目录中的dotfile中使用它对我来说完全没问题。

~/.mongorc.js不允许指定默认连接字符串。但我希望这样的选项可用,因为mysql CLI支持~/.my.cnf,允许您指定用户名/密码/主机名/数据库。那么,这是mongodb的哪个位置?

编辑:即使mongodb localhost处于完全安全状态(也不需要不安全的本地test数据库),解决方案也必须正常工作 - 我认为这不用说了。 / p>

2 个答案:

答案 0 :(得分:1)

您可以在~/.mongorc.js中运行mongo shell命令。因此,您只需在~/.mongorc.js中运行connect方法:

db = connect("mongodb://username:password@host:27017/myDatabase")

运行mongo时,它将首先连接到localhost,然后连接到传递给connect方法的数据库。

MongoDB服务器必须在localhost上运行,否则mongo shell会在尝试连接到其他数据库之前出错并退出。

运行mongo --nodb以解决在连接到~/.mongorc.js中定义的任何内容之前需要在localhost上连接的问题。

答案 1 :(得分: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和连接脚本的路径,而不是依赖于隐式的每用户配置。 / p>