Mongoose链接权限用户Mongodb数据库

默认Mongodb数据库不需要密码就可以连接。我们想要新建用户权限来连接数据库,该怎么做?
还指定用户连接指定数据库名,如此管理权限也保障安全隐患。

进入 MongoDB 安装目录,打开目录bin运行终端,例如:

C:\Program Files\MongoDB\Server\4.4\bin

在该目录下运行终端,cmd或者cmder

进入 mongo 程序命令行

mongo

如下图:
_20220210103440.png

打开user表

Mongodb初始安装都有默认admin数据库,里面有个users表,可以配置用户管理数据库
执行 use admin 命令链接admin数据库

use admin

查看用户列表

show users

如果没有配置用户账号,查询出来就是空的。

创建最高权限root用户

超级管理员root。角色:root。root角色用于关闭数据库。

注意:密码强度需要加大

。这里只是示例

db.createUser({
    user: "root",
    pwd: "123456",
    roles: [{
        role: "root",
        db: "admin"
    }]
})

创建管理员账户

mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。admin用户用于管理账号,不能进行关闭数据库等操作。

db.createUser({
  user: "admin",
  pwd: "123456",
  roles: [{
    role: "userAdminAnyDatabase",
    db: "admin"
  }]
})

创建用户自己的数据库的管理角色

role: "dbOwner"代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等,当账号管理员和超级管理员,可以为自己的数据库创建用户了。

  • 这时候一定,一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin。
  • 如果是读写角色的话,权限设置为role: "readWrite"。

例如:新建了一个新数据库名为 xuanyu_test_db, 那么我们先use xuanyu_test_db, 再创建用户

use xuanyu_test_db

创建用户

db.createUser({
    user: "user",
    pwd: "123456",
    roles: [{
        role: "dbOwner",
        db: "xuanyu_test_db"
    }]
})

如何删除用户

删除用户必须由账号管理员来删,所以,切换到admin角色

use admin

验证用户

db.auth("admin","password")

删除单个用户

db.system.users.remove({user:"XXXXXX"})

删除所有用户

db.system.users.remove({})

修改配置项 authorization: enabled 开启登录鉴权

找到bin目录下面mongod.cfg文件,使用vscode(要以管理员权限)打开,开启authorization:enabled,如下图:

0220210123220.png
20220210123448.png

宝塔面板Mongodb如何配置用户权限

进入宝塔面板安装mongodb

220210144223.png

安装完成之后,进入目录终端,下一步操作和上面一样

20220210144447.png

authorization: enabled 开启登录鉴权

20220210144714.png

如果需要外网链接数据库,设置ip 0.0.0.0
20220210144830.png

授权远程登录(这里以Navicat Premium 工具为例,其他大同小异);

3915.pngng

Last modification:February 10, 2022
如果觉得我的文章对你有用,请随意赞赏