注册

mongodb 实现远程连接

下面是MongoDB实现远程连接的完整攻略,包含两条示例说明。

概述

默认情况下,MongoDB只允许本地连接。如果想要从远程连接到MongoDB,需要对MongoDB进行一些配置。

在以下的示例中,假设MongoDB的安装路径为/usr/local/mongodb,并且MongoDB安装在CentOS 7系统上。

配置MongoDB

修改MongoDB的配置文件/usr/local/mongodb/mongodb.conf,将bindIp改为0.0.0.0

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # 默认是绑定到127.0.0.1,改为0.0.0.0允许远程连接

配置防火墙

如果在MongoDB所在主机上开启了防火墙,需要添加一条规则来允许MongoDB的连接:

sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload

配置SELinux

如果在MongoDB所在的主机上开启了SELinux,需要添加一条规则来允许MongoDB的连接:

sudo semanage port -a -t mongod_port_t -p tcp 27017
sudo systemctl restart mongod

示例一:使用mongo Shell

使用mongo Shell连接到远程MongoDB,需要以下步骤:

  1. 在本地电脑上安装MongoDB的客户端mongo Shell,下载地址:https://www.mongodb.com/download-center/community
  2. 打开终端,输入以下命令连接到MongoDB:
mongo <主机名或IP地址>:27017

比如,要连接到IP地址为192.168.1.100的MongoDB,命令如下:

mongo 192.168.1.100:27017

如果MongoDB需要用户名和密码进行认证,可以使用以下命令:

mongo --username <用户名> --password <密码> <主机名或IP地址>:27017/admin

示例二:使用Node.js

使用Node.js连接到远程MongoDB,需要以下步骤:

  1. 安装MongoDB的驱动程序mongoose:
npm install mongoose
  1. 在Node.js的代码中连接MongoDB:
const mongoose = require('mongoose');
mongoose.connect('mongodb://<用户名>:<密码>@<主机名或IP地址>:27017/<数据库名>');

比如,要连接到IP地址为192.168.1.100的MongoDB,名为test的数据库,用户名为admin,密码为123456,代码如下:

const mongoose = require('mongoose');
mongoose.connect('mongodb://admin:123456@192.168.1.100:27017/test');

注意:如果MongoDB没有启用认证,则可将<用户名>:<密码>@部分省略。