下面是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,需要以下步骤:
- 在本地电脑上安装MongoDB的客户端mongo Shell,下载地址:https://www.mongodb.com/download-center/community
- 打开终端,输入以下命令连接到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,需要以下步骤:
- 安装MongoDB的驱动程序mongoose:
npm install mongoose
- 在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没有启用认证,则可将<用户名>:<密码>@
部分省略。