【问题标题】:Unable to connect to MongoDB hosted on a different server - PHP无法连接到托管在不同服务器上的 MongoDB - PHP
【发布时间】:2013-03-02 02:46:58
【问题描述】:

我创建了两个 AWS 实例并为它们分配了两个不同的弹性 IP。一个实例用于数据库服务器(托管在 MongoDB 中),另一个用于托管网站。

我无法通过我的 PHP 代码连接到服务器。我的代码如下所示:

try{
    $connection = new Mongo('mongodb://107.21.230.121:27017');
}
    catch (MongoConnectionException $exception)
{
    print_r($exception->getMessage());
}   

当我在我的网站上运行此代码时,我收到以下错误:

“连接失败:107.21.230.121:27017: 0 ms 后超时。”

我已经检查了运行 MongoDB 的服务器。使用 Mongo shell,我还能够创建一些集合和文档。

尝试了各种策略都没有成功。有人可以建议我在哪里设置错误吗?

【问题讨论】:

  • 是否允许该主机连接到该数据库?防火墙设置?
  • 我没有使用任何防火墙。也没有限制任何IP进行连接。
  • afair MongoDB 默认只绑定到本地主机
  • 默认设置是mongo只允许localhost连接,所以你应该检查你的配置是否允许其他主机连接。
  • 安装并尝试通过应用服务器上的 mongo shell 进行连接。这将确认是否存在连接问题。

标签: php mongodb amazon-web-services amazon-ec2 cloud


【解决方案1】:

从对您的实例的快速而肮脏的 nmap 扫描来看,您似乎没有在安全组中打开端口 (27017)。这需要在端口服务器上完成。

【讨论】:

  • 我已经尝试了一切来打开端口。这就是我尝试过的全部: 1. service stop mongod 2. vi /etc/mongod.conf (将我的第二个服务器 ip 添加到 bind_ip) 3. service start mongod 4. iptables INPUT -s -p tcp -m tcp --dport 27017 -j ACCEPT 仍然没有运行。我不是 MongoDB 的老前辈。刚刚从 MySQL 过渡到 MongoDB,它受到了很多伤害:(
  • 在 AWS 的安全组中你需要打开 27107 端口,这不在实例本身上,它在 ec2 控制台中。 docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
猜你喜欢
  • 2012-09-10
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2014-02-04
相关资源
最近更新 更多