步骤 1:修改 MongoDB 绑定 IP
默认情况下,MongoDB 仅绑定本地 IP(127.0.0.1
),需修改为 0.0.0.0
以允许所有 IP 访问。
-
找到配置文件:
- Linux 默认路径:
/etc/mongod.conf
- Windows 默认路径:
<安装目录>\bin\mongod.cfg
- Linux 默认路径:
-
修改
net.bindIp
配置:net: port: 27017 bindIp: 0.0.0.0 # 修改为 0.0.0.0 或指定服务器公网 IP
-
保存文件并重启 MongoDB 服务:
# Linux(Systemd) sudo systemctl restart mongod # Windows(服务管理器) 在“服务”中找到 MongoDB,右键重启。
步骤 2:开放防火墙端口
确保服务器的防火墙允许 27017
端口的入站流量。
-
Linux(以 UFW 为例):
sudo ufw allow 27017/tcp sudo ufw reload
-
Windows:
- 进入“控制面板 → Windows Defender 防火墙 → 高级设置”。
- 新建入站规则,允许 TCP 端口
27017
。
步骤 3:配置云服务器安全组
如果使用云服务器(如 AWS、阿里云、腾讯云),需在控制台配置安全组规则:
- 允许来源
0.0.0.0/0
(或指定 IP 段)访问TCP:27017
。 - 应用安全组到 MongoDB 所在的服务器。
步骤 4:启用身份验证(强烈推荐)
开放外网前,务必启用 MongoDB 身份验证,避免未授权访问。
-
创建管理员用户:
use admin db.createUser({ user: "admin", pwd: "your_password", roles: ["root"] })
-
启用认证:
修改配置文件,添加:security: authorization: enabled
重启 MongoDB 服务。
步骤 5:测试外网连接
从外网机器使用 mongo
客户端或工具(如 MongoDB Compass)连接:
mongo "mongodb://<服务器公网IP>:27017" -u admin -p your_password --authenticationDatabase admin
或使用连接字符串:
mongodb://admin:your_password@<公网IP>:27017/admin?authSource=admin
常见问题排查
-
连接超时:
- 检查服务器防火墙和云安全组是否开放端口。
- 使用
telnet <公网IP> 27017
测试端口连通性。
-
认证失败:
- 确认用户名、密码和认证数据库(
authSource
)正确。 - 检查 MongoDB 日志(
/var/log/mongodb/mongod.log
)是否有错误。
- 确认用户名、密码和认证数据库(
-
配置未生效:
- 确保修改配置文件后重启了 MongoDB 服务。
安全建议
- 避免长期开放 MongoDB 到公网,使用 VPN 或 SSH 隧道更安全。
- 限制访问 IP 范围(如仅允许公司 IP)。
- 定期更新 MongoDB 版本,修复已知漏洞。