我找不到任何地方为mongo CLI设置默认连接URL。我希望能够指定特定的用户名/密码/主机名/数据库,这些都可以指定为URL。但是,我希望能够在shell中输入mongo
而不是mongo "mongodb://…"
。
我也不希望密码显示在/proc/«PID»/cmdline
中,但是在我的主目录中的dotfile中使用它对我来说完全没问题。
~/.mongorc.js
不允许指定默认连接字符串。但我希望这样的选项可用,因为mysql
CLI支持~/.my.cnf
,允许您指定用户名/密码/主机名/数据库。那么,这是mongodb
的哪个位置?
编辑:即使mongodb
localhost
处于完全安全状态(也不需要不安全的本地test
数据库),解决方案也必须正常工作 - 我认为这不用说了。 / p>
答案 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>