0.确定服务器是Centos
cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
- rpm
rpm -ivh mongodb-org-server-7.0.14-1.el7.x86_64.rpm
2.修改 /etc/mongod.conf 这个配置文件
改为了0.0.0.0适配所有ip
# mongod.conf
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
3.启动服务
systemctl start mongod.service
4.检查服务状态
systemctl status mongod
5.也可以关闭服务
systemctl stop mongod.service
6.防火墙状态
systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2024-10-25 10:23:17 CST; 1 day 8h ago
Main PID: 909 (firewalld)
CGroup: /system.slice/firewalld.service
└─909 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
7.查询防火墙放开的端口列表
firewall-cmd --permanent --list-ports
也可以单独查看某个端口是否放开
firewall-cmd --query-port=27017/tcp
8.增加端口
firewall-cmd --permanent --add-port=27017/tcp
9.关闭防火墙,重启防火墙
systemctl stop firewalld.service
systemctl start firewalld.service
P.S 似乎可以通过reload来实现,我没有尝试
firewall-cmd --reload
最后说一下修改默认端口会遇到的问题
由于mongodb安装时 会设置 mongod_port_t 默认值为27017
它是 SELinux 中的一种端口类型标签,专门用于标识 MongoDB(mongod)服务允许使用的端口。这种类型标签告诉 SELinux 哪些端口是 MongoDB 服务可以访问的,从而实现强制访问控制。通过这种方式,SELinux 可以限制和管理 MongoDB 访问的端口,确保其他服务不能使用这些端口,也防止 MongoDB 在未经授权的端口上运行。
所以如果直接在conf中修改端口,重新启动将出现错误:
SocketException setup bind Permission denied
标准做法是修改mongod_port_t
但是简单粗暴的方法是,设置SELinux 为宽容模式:不会阻止操作,只会记录):
sudo setenforce 0
设置后,再次启动mongodb就不会报错了。