MongoDB Ubuntu版网络访问配置指南
MongoDB的网络访问控制主要通过/etc/mongod.conf
文件中的net
部分实现。使用文本编辑器(如nano
)打开配置文件:
sudo nano /etc/mongod.conf
找到net
部分,修改bindIp
参数:
net:
bindIp: 0.0.0.0 # 监听所有网络接口
port: 27017 # 默认端口(可自定义,需与客户端一致)
net:
bindIp: 127.0.0.1,192.168.1.100 # 本地+指定IP(逗号分隔)
port: 27017
保存并关闭文件(Ctrl+X
→Y
→Enter
)。
修改配置后,需重启服务使更改生效:
sudo systemctl restart mongod
验证服务状态(确保无报错):
sudo systemctl status mongod
若状态显示active (running)
,则表示重启成功。
Ubuntu默认使用ufw
(Uncomplicated Firewall)管理防火墙,需允许MongoDB端口(默认27017)的入站连接:
sudo ufw allow 27017/tcp # 允许所有IP访问27017端口
若需限制仅特定IP访问(如192.168.1.50
),可使用更严格的规则:
sudo ufw allow from 192.168.1.50 to any port 27017/tcp # 仅允许192.168.1.50访问
启用ufw
并检查规则:
sudo ufw enable # 启用防火墙
sudo ufw status # 查看当前规则(确认27017端口已放行)
若使用iptables
,可执行以下命令:
sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT # 允许27017端口
sudo netfilter-persistent save # 持久化规则(Ubuntu 16.04+)
为防止未授权访问,需启用MongoDB的用户认证:
编辑/etc/mongod.conf
,添加security
部分:
security:
authorization: enabled # 开启认证
保存并重启MongoDB服务:
sudo systemctl restart mongod
创建管理员用户(以admin
数据库为例):
mongo # 进入MongoDB shell
use admin # 切换到admin数据库
db.createUser({
user: "admin",
pwd: "StrongPassword123!", # 设置强密码
roles: [{ role: "root", db: "admin" }] # 授予root权限(最高权限)
})
exit # 退出shell
此后,连接MongoDB需提供用户名和密码:
mongo --host <服务器IP> --port 27017 -u admin -p StrongPassword123 --authenticationDatabase admin
若需进一步限制访问,可通过iptables
仅允许特定IP段访问:
sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.0/24 -j ACCEPT # 允许192.168.1.0/24网段
sudo iptables -A INPUT -p tcp --dport 27017 -j DROP # 拒绝其他所有IP
sudo netfilter-persistent save # 持久化规则
此配置可防止未授权的外部IP访问MongoDB。
bindIp: 0.0.0.0
,应仅绑定必要的IP地址(如服务器IP+运维管理IP)。/var/log/mongodb/mongod.log
),监控异常连接行为。