当前位置:   article > 正文

mongoDB添加管理员与用户_admin数据库中添加全局管理员用户dashujuadmin并验证成功

admin数据库中添加全局管理员用户dashujuadmin并验证成功

情况

首先需要明确的是mongoDB是没有默认管理员权限的,后端代码连接数据库,不需要账户密码,在自己本地开发的时候,确实是方便了些,但如果是要开放或者上线的话,虽然是局域网,但也不应该继续让数据库裸奔啦。

方法步骤

  1. admin数据库(admin数据库是mongoDB自带的数据,有一张user表,用来存放用户,以及用户权限),添加管理员账号
    切换到数据库admin
    use admin
    
    • 1
    创建超级管理员账号root,密码123456
    db.createUser({user: "root", pwd: "123456", roles: [{role: "root", db:"admin"}})
    
    • 1
    可以查看创建的账号
    show users
    
    • 1
  2. 重新启动mongoDB(以命令启动为例,也可以用mongodb.conf配置文件设置auth=true,),并开启权限验证(命令行启动,直接启动时加 --auth参数即可)
    mongod --auth
    
    • 1
    验证身份方式一
    mongo
    use admin
    db.auth('root', '123456')
    
    • 1
    • 2
    • 3
    验证身份方式二 mongo ip:port/database --username "username" -- password "password"
    mongo localhost:27017/admin --username "root" -- password "123456"
    
    • 1
  3. 给某个数据库test单独设置管理员
    use test  // 跳转到需要添加用户的数据库
    db.createUser({
      user: 'testAdmin',  // 用户名
      pwd: '123456',  // 密码
      roles:[{
        role: 'readWrite',  // 角色
        db: 'test'  // 数据库名
      }]
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

Robo 3T的身份验证

  1. 点击编辑
    Robo 3T的身份验证
  2. 切换到Authentication,填写User name和Password,并保存
    切换到Authentication,填写User name和Password,并保存
  3. 发现已经有了账号和权限,点击连接数据库
    发现已经有了账号和权限,点击连接数据库
Node中mongoose代码中身份验证
const mongoose = require('mongoose');
// mongoose.connect('mongodb://username:password@host:port/database?options...');
// 账号:密码@ip:端口/数据库

mongoose.connect('mongodb://testAdmin:123456@localhost/test', 
{useNewUrlParser: true, useUnifiedTopology: true});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
常用命令
show users  // 查看当前库下的用户
db.dropUser('testadmin')  // 删除用户
db.updateUser('admin', {pwd: '654321'})  // 修改用户密码
db.auth('admin', '654321')  // 密码认证
  • 1
  • 2
  • 3
  • 4
数据库角色与权限
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参考信息:
mongodb 设置用户账号密码
MongoDB 设置用户名密码
mongodb设置账号密码
MongoDB学习笔记(六)——MongoDB配置用户账号与访问控制

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/466215
推荐阅读
相关标签
  

闽ICP备14008679号