Mongodb 权限配置

2020-01-15 12:55:00 +0800
categories: dotnet

MongoDB权限配置,设置用户名和密码,并进行相关操作


添加用户

一般情况下,mongodb数据库的接口是开放的,这样所有人都可以访问进行修改,这样在内网中使用很方便,但是在公网上,就要考虑权限的问题,所以我们先给数据库添加用户,并设置权限

  • 在控制台输入mongo,如果显示无法识别该命令,是因为你没有将mongo的bin文件夹放到环境变量里,可以放进去,或者在cd到bin文件夹下,一般是C:\Program Files\MongoDB\Server\4.2\bin,进行操作
  • use admin,跳转到admin数据库
  • db.createUser({user:“username”,pwd:“123456”,roles:[ { role: “readWrite”, db: “wx_applet” } ]}),添加用户,添加成功后,会显示Successfully adder user提示,username是用户名称,123456是用户密码,可以根据自己进行设置
  • show users 查看结果,可以看到刚刚创建的用户

开启权限验证

创建好用户之后,现在我们并没有真正使用权限验证,需要再重新设置权限验证

  • 在bin文件夹中找到mongod.cfg,打开
  • 添加如下字段
security:
    authorization: enabled
  • 保存,重启mongodb服务,若重启失败,可能是上面字段的缩进问题,重新调整,重启成功
  • 再回到控制台窗口,输入mongo
  • 执行show dbs,发现没有结果,use 到一个数据库后,show collections显示需要权限,说明权限验证开启成功
  • 这时 use admin,记住一定要切换到admin数据库,不然无法验证成功
  • db.auth(‘username’,‘123456’);提示1,显示验证成功
  • show dbs成功列出所有数据库

Node中使用权限验证

  • 在创建MongoClient时,使用以下代码进行设置
    this.client = new MongoClient(this._dbUrl, {
      useNewUrlParser: true,
      auth: {
        user: userName,
        password: password
      }
    });
  • userName是刚刚设置的用户名,即"username",password是用户密码
  • 这些信息可以存储到package.json中config字段,使用类似于process.env.npm_package_config_username的字段来进行读取相关信息,其他信息修改config_后面的相关字段即可(前面的字段代表package.json中config的username字段)

egg-mongose中使用权限设置

  • 在config/config.default.js中添加以下字段
    mongoose: {
      client: {
        url: 'mongodb://IP:27017/dbName',
        options: {
          auth: { authSource: 'admin' },
          user: 'username',
          pass: '123456',
        },
      },
    },
  • 重启服务,即可使用权限验证

数据库备份使用权限验证

使用了权限验证之后使用mongodump命令备份文件夹也需要权限验证,但是我们刚刚都是在mongo里面进行权限验证,mongodump是在外面执行,其实mongodump也提供了相应参数使用权限验证,即:

mongodump --username username --password 123456 --authenticationDatabase admin -h 127.0.0.1 -d dbname -o F:\copy\db\config

以-或者–开头的都是参数名,后面是相应的参数,根据自己需求进行设置


参考资料
  mongodb API 文档

你可能感兴趣的:(mongodb)