【问题标题】:Error remote access MongoDB on Ubuntu server在 Ubuntu 服务器上远程访问 MongoDB 时出错
【发布时间】:2026-01-28 15:05:02
【问题描述】:

我有一个 Ubuntu 14.04 Linux 服务器和 MongoDB 3.2.4 作为 Droplet(一键式应用程序)在 Digital Ocean 上运行。

Ping 服务器正常工作(发布后 droplet 被破坏):

ping 198.199.125.101

我创建了数据库test 和用户:

db.createUser({"user": "test", "pwd": "test", "roles": ["dbOwner"]})

mongod.conf我改了bindIp: 0.0.0.0并重启了mongoDB

我禁用了防火墙并重新启动了服务器。只是为了测试,只是为了证明 iptables 不是问题(不要在常规服务器上这样做):

sudo ufw disable

问题是我无法远程访问 mongo 数据库

mongo 198.199.125.101:27021/test -u "test" -p "test"

错误信息(连接被拒绝):

MongoDB shell version: 3.2.0
connecting to: 198.199.125.101:27021/test
2016-05-11T22:05:35.876+0200 W NETWORK  [thread1] Failed to connect to 198.199.125.101:27021, reason: errno:61 Connection refused
2016-05-11T22:05:35.879+0200 E QUERY    [thread1] Error: couldn't connect to server 198.199.125.101:27021, connection attempt failed :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

【问题讨论】:

  • bindIp: 198.199.125.101 也一样吗?
  • mongodb端口也是27017

标签: linux mongodb ubuntu remote-access


【解决方案1】:

首先在mongo机器上运行netstat,验证27021端口是否打开。 netstat -anp 应该这样做。

然后执行“telnet 127.0.0.1 27021”以确保它已打开。

一旦您确定端口已打开,然后使用telnet 198.199.125.101 27021 验证您可以连接到端口 27021 上的 mongo 机器。如果可以,那么它与您的应用程序有关。如果不是,那么某些东西正在阻止连接。一些防火墙什么的。你在aws上吗?

根据netstat,你可以试试mongo 198.199.125.101:27017/test -u "test" -p "test"

【讨论】:

  • Netstat -anp 给出....... 活动 Internet 连接(服务器和已建立) Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称 tcp 0 0 0.0.0.0: 27017 0.0.0.0:* LISTEN 878/mongod 看起来不错不是吗?
  • telnet 127.0.0.1 27021.....给出错误......无法连接到远程主机:连接被拒绝
  • 等一下。 27017 还是 27021?
  • 试试 mongo 198.199.125.101:27017/test -u "test" -p "test"。而不是 27021
  • 这样就解决了问题。我觉得好傻!!非常感谢您,很抱歉浪费您的时间。我浪费了一天时间搜索这个问题。 grrrr……但我也学到了很多……