You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MongoDB Compass连接CentOS7 VPS上的MongoDB及排查异常?

问题排查与解决方法

一、MongoDB Compass无法远程连接的原因及解决

1. 端口未对外开放

CentOS7默认防火墙(firewalld)会阻断外部对27017端口的访问,同时云服务商的安全组也可能限制端口:

  • 开放防火墙端口:
    firewall-cmd --add-port=27017/tcp --permanent
    firewall-cmd --reload
    
  • 登录云服务商控制台,在安全组规则中添加入方向的27017端口,允许所有IP或指定你的本地IP访问。

2. MongoDB绑定地址限制

默认MongoDB仅绑定127.0.0.1,仅允许本地连接:

  • 编辑MongoDB配置文件(通常路径为/etc/mongod.conf):
    net:
      bindIp: 0.0.0.0  # 改为允许所有IP访问,或指定你的本地IP
      port: 27017
    
  • 重启MongoDB服务:
    systemctl restart mongod
    

3. 未配置认证(若开启了权限验证)

如果MongoDB启用了auth选项,Compass连接时必须提供正确的用户名、密码及认证数据库(默认admin):

  • 在Compass连接界面,点击「Advanced Options」,在「Authentication」标签下选择SCRAM认证方式,输入用户名、密码,认证数据库填admin。

二、show dbs仅显示系统数据库的原因及解决

1. 当前用户权限不足

如果连接时使用的用户没有读取非系统数据库的权限,show dbs只会返回系统库:

  • 切换到admin数据库并使用有权限的用户登录:
    use admin
    db.auth("your_admin_username", "your_admin_password")
    
  • 执行show dbs即可看到所有有权限访问的数据库。

2. 数据库未存储任何数据

MongoDB采用懒加载机制,创建数据库后若未插入任何数据,不会在show dbs中显示:

  • 切换到目标数据库并插入一条测试数据:
    use your_database_name
    db.test_collection.insertOne({key: "value"})
    
  • 再次执行show dbs即可看到该数据库。

3. 连接时指定了空数据库

如果mongosh连接时指定了一个未存储数据的数据库,默认不会显示在show dbs中,只需切换到admin数据库或插入数据即可解决。

内容的提问来源于stack exchange,提问作者MN A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:03:31