如何为远程连接启用密码身份验证,并为MongoDB的本地连接禁用密码身份验证?

如何为远程连接启用密码身份验证,并为MongoDB的本地连接禁用密码身份验证?,mongodb,Mongodb,如何为远程连接启用user:password身份验证,并对来自localhost的所有内容禁用它?我在本地运行prod,我真的不想启用任何用户或密码身份验证,但我希望能够远程连接到我的数据库以管理prod上的数据。您有两件事要做 1-通过设置防火墙规则,允许远程连接到您的服务器。 例如,如果您使用的是Linux,这可以通过 sudo ufw allow from REMOTE_MACHINE_IP_HERE to any port 27017 之后别忘了重新加载防火墙 2-编辑mongod.c

如何为远程连接启用user:password身份验证,并对来自localhost的所有内容禁用它?我在本地运行prod,我真的不想启用任何用户或密码身份验证,但我希望能够远程连接到我的数据库以管理prod上的数据。

您有两件事要做

1-通过设置防火墙规则,允许远程连接到您的服务器。

例如,如果您使用的是Linux,这可以通过

sudo ufw allow from REMOTE_MACHINE_IP_HERE to any port 27017
之后别忘了重新加载防火墙

2-编辑mongod.conf以设置要允许连接的接口的IP。

这意味着您不应在此配置上允许localhot或127.0.0.1

在mongo.conf中,执行以下操作

# network interfaces
net:
  port: 27017
  bindIp: mongodb_server_ip_here
重新启动mongodb服务器,就可以开始了

  • 在版本>=3.6中,您可以从每个用户的mongodb实例内部添加其他限制,如下所示:

    mongo --port 27018
    
    使用管理员

    db.createUser( { 用户:“受限”, 密码“, 角色:[{role:“readWrite”,db:“reporting”}], 身份验证限制:[{ 客户资料来源:[“40.0.0.0”、“12.0.0.0”], 服务器地址:[“120.0.0.0”] } ] } )

  • 此外,除了身份验证、授权和第3层防火墙限制之外,强烈建议启用传输加密以防止可能的流量嗅探尝试

  • 但从我在您的问题中看到的情况来看,如果您想在没有用户/密码的情况下远程访问,您可以创建ssh隧道,并重新检测要在客户端计算机中远程访问的本地服务器mongo端口,还可以定义防火墙规则,以便不从服务器访问本地服务器端口。这里的链接似乎详细说明了如何创建ssh tunel来访问mongodb远程服务器:

    只需使用以下命令即可创建隧道:

    ssh -L27018:CLIENT1:27017 SERVER1
    
    并从客户端本地访问mongodb服务器,如下所示:

    mongo --port 27018
    
    如何为远程连接启用user:password身份验证,并对来自localhost的所有内容禁用它

    MongoDB不支持这种安排

    如果在部署中启用身份验证,则所有连接都必须进行身份验证