如何查找Heroku上MongoDB数据库主机名以完成Pentaho连接
Heroku MongoDB实例主机名获取方法
你可以通过以下三类途径拿到对应参数,所有方法拿到的核心信息都是官方注入的数据库连接串,拆分后即可得到主机名:
- 用Heroku CLI本地查询
确保本地已经安装并登录Heroku CLI,进入绑定了MongoDB服务的应用关联的本地代码目录,直接执行heroku config:get MONGODB_URI命令,终端会直接输出完整的MongoDB连接串,格式为mongodb://[数据库用户名]:[数据库密码]@[主机名]:[端口]/[数据库名]?[额外参数],其中@符号之后、:端口之前的字段就是目标主机名。如果是副本集集群,@之后到/之前的多个用逗号分隔的地址段就是所有副本集节点的主机名。 - 通过Heroku网页控制台查询
登录Heroku网页端,进入对应应用的详情页,切换到「Settings」标签页,点击「Reveal Config Vars」按钮展示所有环境变量,找到键为MONGODB_URI的配置项,和上述方法一样从连接串里拆分出主机名即可。如果你的MongoDB是自行绑定的Atlas集群而非Heroku官方插件,也可以直接登录MongoDB Atlas控制台,进入对应集群的连接配置页,直接查看标注的主机地址信息。 - 从应用运行日志中提取
如果暂时没有CLI和控制台权限,可以在应用代码中临时添加打印对应环境变量的逻辑(比如Node.js环境打印process.env.MONGODB_URI、Python环境打印os.getenv("MONGODB_URI")),部署应用后查看运行日志,拿到完整连接串后拆分主机名,拿到参数后记得删掉临时加的打印逻辑避免敏感信息泄露。
注意:Heroku托管的MongoDB不会响应公网域名扫描、端口探测类的请求,不要尝试用这类工具扫描主机名,拿到的结果一定是错误的。如果配置Pentaho连接时填了正确主机名还是连不上,检查是否漏填了副本集参数、SSL连接选项,Heroku上的MongoDB服务默认要求开启SSL连接。
内容的提问来源于stack exchange,提问作者Tiago Monteiro
相关产品推荐
相关产品推荐

