Nodejs 部署mongodb疑问

Nodejs 部署mongodb疑问

我对mongodb不懂,请教几个部署问题。 1.服务器部署的时候27017(+1000)两个端口的对外http服务有必要关闭么,27017端口的怎么关? 2.就一个简单的单机应用,有必要建立用户吗? 3.备份数据的话,拷贝整个数据文件夹,恢复数据的时候直接覆盖? TKS!

4 回复

当然可以。以下是针对您的帖子内容的详细解答:

1. 关闭MongoDB端口

MongoDB默认使用27017端口进行数据库通信。如果您不希望该端口对外开放,可以通过配置文件来限制访问。

修改配置文件:

首先找到MongoDB的配置文件 mongod.conf(通常位于 /etc/mongod.conf/usr/local/etc/mongod.conf),然后添加或修改以下配置项:

net:
  port: 27017
  bindIp: 127.0.0.1  # 只允许本地连接

这样,MongoDB将只监听本地连接,外部请求将被拒绝。

重启MongoDB服务:

sudo systemctl restart mongod
# 或者
sudo service mongod restart

2. 单机应用是否需要创建用户

对于单机应用,虽然不是必须的,但强烈建议为MongoDB创建用户以提高安全性。这可以通过MongoDB的内置用户管理功能来实现。

创建用户:

连接到MongoDB实例并创建管理员用户:

// 使用mongo shell连接到MongoDB
mongo

// 切换到admin数据库
use admin

// 创建管理员用户
db.createUser({
  user: "adminUser",
  pwd: "password",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

之后,在应用程序中使用认证信息连接MongoDB:

const mongoose = require('mongoose');

mongoose.connect('mongodb://adminUser:password@localhost:27017/mydatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

3. 数据备份与恢复

备份和恢复MongoDB数据时,建议使用mongodumpmongorestore工具,而不是简单地拷贝文件夹。这些工具会确保数据的一致性和完整性。

备份数据:

mongodump --out /path/to/backup/

恢复数据:

mongorestore /path/to/backup/

这样做可以避免潜在的数据损坏或丢失问题。

希望这些信息对您有帮助!


没人回答,我来回答吧 1.默认端口27017可以用–port 指定修改为别的。+1000 rest 接口,不用建议关闭。 2.测试可以不需要 3.没有写入的时候可以那么备份;写入的时候,略。

mongodb在线运行的时候不能这样copy文件备份,要用命令mongodump

针对你的问题,我会逐一解答,并提供一些示例代码帮助你理解。

  1. 关于关闭端口

    • MongoDB默认监听27017端口。如果你不需要外部访问MongoDB,可以考虑使用防火墙规则来限制对27017端口的访问,而不是完全关闭它。例如,在Linux上,你可以使用iptablesufw来限制访问。

    示例(使用ufw):

    sudo ufw deny in to any port 27017
    
    • 如果你想在本地开发环境中完全禁用MongoDB监听27017端口,可以在启动MongoDB时添加配置参数--bind_ip 127.0.0.1来仅允许本机访问。
  2. 是否需要创建用户

    • 对于单机应用,不强制要求创建用户。但是为了安全起见,建议为MongoDB创建至少一个管理员用户,以便更好地控制访问权限。你可以在MongoDB中创建一个管理员用户,然后为应用连接指定特定的数据库用户。

    创建管理员用户:

    const MongoClient = require('mongodb').MongoClient;
    const url = 'mongodb://localhost:27017';
    
    MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
      if (err) throw err;
      console.log("Connected successfully to server");
      const db = client.db('admin');
      db.createUser({
        user: "admin",
        pwd: "password",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }, (err, result) => {
        if (err) throw err;
        console.log("Admin user created");
        client.close();
      });
    });
    
  3. 关于备份和恢复

    • 使用MongoDB的mongodumpmongorestore工具进行备份和恢复是比较推荐的方法。简单地复制数据文件夹可能会导致数据损坏或不一致。使用官方工具能确保数据的一致性和完整性。

    备份命令示例:

    mongodump --out /path/to/backup/
    

    恢复命令示例:

    mongorestore --db your_database_name /path/to/backup/your_database_name/
    

希望这些信息对你有帮助!

回到顶部