本地部署MongoDB数据库实现外部网络连接的问题咨询
树莓派MongoDB公网可访问配置方案
1. 修改MongoDB服务绑定配置
首先修改MongoDB默认的本地绑定规则:
- 打开配置文件:
sudo nano /etc/mongod.conf - 找到
net配置块,将bindIp: 127.0.0.1修改为bindIp: 0.0.0.0,如果已经给树莓派设置了静态内网IP,也可以直接绑定固定内网IP,安全性更高 - 保存退出后重启MongoDB服务生效:
sudo systemctl restart mongod - 验证绑定是否生效:运行
netstat -plntu | grep mongod,返回结果中监听地址应为0.0.0.0:27017
2. 配置MongoDB访问控制(必操作,避免未授权攻击)
绝对不能裸奔开放数据库到公网,必须开启权限校验:
- 进入MongoDB shell:
mongosh - 切换到admin数据库:
use admin - 创建管理员账号,密码请设置为大小写+数字+符号组合的强密码:
db.createUser( { user: "自定义管理员账号", pwd: "自定义强密码", roles: [ { role: "root", db: "admin" } ] } )
- 回到
/etc/mongod.conf文件,找到security配置块,取消注释后添加authorization: enabled开启权限校验 - 再次重启MongoDB服务生效:
sudo systemctl restart mongod
3. 本地网络端口映射配置
树莓派处于内网,需要在家庭主路由器上配置端口转发让公网可以访问到内网服务:
- 提前给树莓派设置固定静态内网IP,避免IP变动导致映射失效
- 进入路由器后台,找到「端口转发/虚拟服务器/NAT映射」功能入口
- 新增转发规则:外部端口建议设置为10000以上的高位端口(降低被全网扫描命中概率),内部端口填
27017,内部IP填树莓派的静态内网IP,协议选择TCP,保存规则生效 - 获取家庭宽带公网IP:在树莓派上运行
curl ifconfig.me,记录返回的公网IP
4. 谷歌云服务器侧出站规则配置
需要确保谷歌云VPC防火墙允许服务器主动访问你的公网MongoDB端口:
- 进入谷歌云控制台VPC网络-防火墙页面
- 新增出站规则,目标地址填你家宽带公网IP/32,目标端口填你设置的映射外部端口,协议选TCP,动作为允许,规则应用到需要连接MongoDB的服务器实例即可
5. 连接测试
在谷歌云服务器上执行命令测试连通性,将对应参数替换为你自己的配置即可:mongosh "mongodb://你的管理员账号:你的密码@你家公网IP:你设置的映射外部端口/?authSource=admin"
注意事项
- 如果宽带没有公网IP,可以在谷歌云服务器部署frp服务端,树莓派部署frp客户端,代理27017端口实现内网穿透访问
- 如果宽带公网IP是动态的,可以配置DDNS服务绑定域名,避免IP变动后无法连接
内容的提问来源于stack exchange,提问作者deeform
相关产品推荐
相关产品推荐

