AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 202029
Accepted
Brandon
Brandon
Asked: 2018-03-23 08:30:01 +0800 CST2018-03-23 08:30:01 +0800 CST 2018-03-23 08:30:01 +0800 CST

使用 Mongodb 绑定特定的 ip

  • 772

我在 Centos 7 上使用 Mongodb 3.6.3。

我正在运行以下命令:

sudo mongod --storageEngine wiredTiger --dbpath /data --bind_ip_all --logpath /var/log/mongodb/mongod.log --fork

一切都会正常工作。除了,绑定 all 不够安全。

我曾经在尝试时收到过日志记录错误,--bind_ip 127.0.0.1,privateIP但发现当我这样做时错误会消失bind_ip [127.0.0.1,privateIP]。

但是,当我尝试在本地连接到 mongo 时,它会失败,并且通过我的站点,它会一直坐在那里直到超时。我检查了一下sudo netstat -plnt | egrep mongod,然后什么都没有出现,虽然它成功地分叉了 mongod 进程,但它没有绑定到任何指定的 ips。

--bind_ip_all作为参考,当我在它返回的版本上尝试相同的命令时tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1645/mongod。

我的问题是,为什么--bind_ip ips无法绑定到指定的ips?

旁注 - 绑定 ips 时,我应该绑定我的弹性 ip 还是我的私有 ip?

mongodb amazon-ec2
  • 1 1 个回答
  • 3632 Views

1 个回答

  • Voted
  1. Best Answer
    Md Haidar Ali Khan
    2018-03-23T14:37:32+08:002018-03-23T14:37:32+08:00

    我正在运行以下命令:

    sudo mongod --storageEnginewiredTiger --dbpath /data --bind_ip_all --logpath /var/log/mongodb/mongod.log --fork

    一切都会正常工作。除了,绑定 all 不够安全。

    根据 MongoDB BOL ,此处 有警告:在绑定到其他 ip 地址之前,请考虑启用安全检查表中列出的访问控制和其他安全措施,以防止未经授权的访问。

    我曾经在尝试 --bind_ip 127.0.0.1,privateIP 时收到日志错误,但发现当我执行 bind_ip [127.0.0.1,privateIP] 时错误会消失。

    在这里我想说,如果您要绑定多个 ip,那么根据此处的 MongoDB 文档要绑定到多个地址,请输入逗号分隔值的列表。

    例子

    localhost,/tmp/mongod.sock
    
    Or 
    
    localhost,192.168.103.100
    

    在上面的示例中,假设我绑定了多个 ip。一个外部 ip (192.168.103.100) 和另一个 localhost 或(代替 localhost,即 127.0.0.1)。

    net.bindIp

    类型:字符串

    默认值:本地主机

    Starting in MongoDB 3.6, mongos and mongod bind to localhost (127.0.0.1) by default.

    但是,当我尝试在本地连接到 mongo 时,它会失败,并且通过我的站点,它会一直坐在那里直到超时。我检查了 sudo netstat -plnt | egrep mongod 没有任何显示,虽然它成功地 fork mongod 进程,但它没有绑定到任何指定的 ips。

    “--fork”是一个标志,告诉 mongod 作为后台进程运行,而不是作为阻塞 shell 的活动进程。“--fork”是一个标志,告诉 mongod 作为后台进程运行,而不是作为阻塞 shell 的活动进程。

    大多数情况下,当我们无法mongd.conf正确配置(我的意思是说 bindIp、端口和授权限制)时,就会得到timed out error.

    作为参考,当我在 --bind_ip_all 版本上尝试相同的命令时,它返回 tcp 0 0 0.0.0.0:27017
    0.0.0.0:* LISTEN 1645/mongod。

    net.bindIpAll

    类型:布尔值

    默认值:假

    New in version 3.6.
    

    如果为 true,则 mongos 和 mongod 实例绑定到所有 IP 地址。将 mongos 和 mongod 附加到可公开访问的接口时,请确保您已实施适当的身份验证和防火墙限制以保护数据库的完整性。

    将 net.bindIp 设置为0.0.0.0,::绑定到所有 IP 地址。

    与上面的 mongo shell 输出一样,mongod 服务器默认返回 localhost 的 pid 端口号27017。

    注意: net.bindIp 和 net.bindIpAll 是互斥的。也就是说,您可以指定其中之一,但不能同时指定两者。

    我的问题是,为什么 --bind_ip ips 无法绑定到指定的 ips?

    旁注 - 绑定 ips 时,我应该绑定我的弹性 ip 还是我的私有 ip?

    可能是你的mongod.conf配置文件没有正确配置。这就是为什么您无法启动 mongod 服务器文件到该特定 ip 的原因。

    由于 MongoDB 配置文件使用YAML格式。

    mongod设置的示例配置文件,你可以在这里找到

    例如,我还mongod.conf以“YAML”格式写下了示例配置文件。

    storage:
      dbPath: /var/mongodb/db/node1   -- this is the dbPath location 
    net:
      bindIp: 192.168.103.100,localhost  -- here there is multiple ip binding
      port: 27011
    security:
      authorization: enabled    -- here Authorization is enabled
    systemLog:
      destination: file
      path: /var/mongodb/db/node1/mongod.log  -- this is log path 
      logAppend: true
    processManagement:
      fork: true    -- here fork is true
    

    除非您无法通过您的 mongod.conf 文件运行 mongod 服务器,否则这意味着您的 YAML 配置文件中存在一些错误。

    注意: YAML 不支持制表符进行缩进:请改用空格。

    希望这对您有所帮助。

    • 2

相关问题

  • Mongo Map-Reduce 还是分片?

  • 使用集群设置 Mongo

  • MongoDB 的 find 和 findone 调用之间的区别

  • 分片对小集合有效吗?

  • 关于操作/管理 MongoDB 的良好资源

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve