首先确认MongoDB服务是否正在运行。使用以下命令查看服务状态:
sudo systemctl status mongod
如果服务未启动,用以下命令启动并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
服务未运行是连接问题的常见原因,需优先排查。
MongoDB的配置文件路径为/etc/mongod.conf,需重点检查以下两项:
net.bindIp:默认可能仅绑定到本地地址(127.0.0.1),若需远程连接,需修改为0.0.0.0(允许所有IP访问)或指定具体IP(如192.168.1.100)。net.port:默认端口为27017,确保未被其他服务占用,如需修改需同步调整客户端连接配置。sudo systemctl restart mongod
注意:开放0.0.0.0会带来安全风险,建议仅允许可信IP访问(如192.168.1.0/24)。
Ubuntu默认启用ufw防火墙,需允许MongoDB端口(默认27017)的入站连接:
sudo ufw allow 27017
查看防火墙状态确认规则是否生效:
sudo ufw status
若防火墙未安装,可通过sudo apt install ufw安装。
ping localhost,确认本地网络正常。ping <服务器IP>,确保网络可达。若无法ping通,需排查网络配置(如路由器、安全组)。日志文件路径为/var/log/mongodb/mongod.log,使用以下命令实时查看最新日志:
sudo tail -f /var/log/mongodb/mongod.log
日志中会记录连接失败的详细原因(如身份验证失败、端口冲突、配置文件语法错误),根据提示针对性解决。
若mongod.conf中启用了身份验证(security.authorization: enabled),远程连接需提供正确的用户名和密码:
mongo --host <服务器IP> --port 27017 -u <用户名> -p <密码> --authenticationDatabase admin
若未创建用户,需先登录本地shell创建管理员账户:
mongo
use admin
db.createUser({user: "admin", pwd: "密码", roles: [{role: "root", db: "admin"}]})
注意:身份验证失败会导致“Authentication failed”错误,需确保用户名、密码及数据库名称正确。
若用户仅具有本地访问权限,需为其授予远程访问权限。登录MongoDB shell,执行以下命令:
use admin
db.grantRolesToUser("用户名", [{role: "readWrite", db: "目标数据库"}, {role: "userAdminAnyDatabase", db: "admin"}])
确保用户拥有对应数据库的操作权限。
通过以上步骤可解决绝大多数Ubuntu上的MongoDB连接问题。若仍无法解决,建议根据日志中的具体错误信息进一步排查(如SELinux限制、Docker网络配置等)。