zoukankan      html  css  js  c++  java
  • MongoDB用户权限认证

    关于用户的认证及权限

       用户是跟着库创建的,在哪个库创建的什么权限的什么用户,只对此库有相应权限(除超级管理员以外)。

    用户管理和认证方法

        官网文档:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

    角色管理方法

        官方详细档:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

    1、内建角色

    • Read:允许用户读取指定数据库
    • readWrite:允许用户读写指定数据库
    • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    • root:只在admin数据库中可用。超级账号,超级权限

    userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户

    root角色,超级管理员角色,可对所有库,所有用户做创建,删除,插入数据等操作

    user:用户名 

    pwd:密码 

    role:指定用户的角色,可以用一个空数组给新用户设定空角色;在 role 字段可以指定内置角色和用户定义的角色

    2、常用查询删除命令

       查看mongodb的所有用户: use admin; db.system.users.find().pretty()

       查看相应库下的用户:use database; show users

       删除用户:use database; db.dropUser('test') 或use admin; db.system.users.remove({user:"admin"})

       删除当前库:use database; db.dropDatabase()

       重置用户密码:db.changeUserPassword("wsy","wushaoyu")开启用户权限认证的情况下,需要管理员来操作重置密码

       验证用户权限:use database;  db.auth("wsy","wushaoyu")  为1则正确

    3、创建用户

    在admin数据库中添加管理员账户:

    use admin

    db.createUser({

    ... user: "admin",

    ... pwd: "admin",

    ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

    ... });

    创建超级管理员用户:

    db.createUser(

    ... {

    ... user: "root",

    ... pwd: "root",

    ... roles: [ { role: "root", db: "admin" } ]

    ... }

    ... );

    给相应库创建相应用户及权限,在wsy数据库中添加wsy用户:

    db.createUser({ 

    ... user:'wsy', 

    ... pwd:'wushaoyu', 

    ... roles:[ 

    ... {role:'readWrite',db:'wsy'} 

    ... ]})

    4、开启用户权限认证功能,在配置文件加入以下2行配置

    security:
      authorization: enabled

    #重启mongodb服务

    [root@mongodb02 ~]# /etc/init.d/mongod restart
    #验证用户权限
    [root@mongodb04 ~]# mongo --host 192.168.1.7
    > use wsy
    > db.auth("wsy","wushaoyu")
    1

    5、重置用户的密码

    #切换到root超级管理员角色

    > use admin
    switched to db admin
    > db.auth("root","root")
    1

    #重置wsy用户的密码

    务必切换到wsy库,否则报错,在admin库找不到wsy用户
    > db.changeUserPassword("wsy","WuShaoYu")
    2019-03-02T19:01:41.375+0800 E QUERY [js] Error: Updating user failed: User wsy@admin not found :
    _getErrorWithCode@src/mongo/shell/utils.js:25:13
    DB.prototype.updateUser@src/mongo/shell/db.js:1541:15
    DB.prototype.changeUserPassword@src/mongo/shell/db.js:1545:9
    @(shell):1:1
    > use wsy(
    switched to db wsy
    > db.changeUserPassword("wsy","WuShaoYu")
    >

    #测试wsy用户密码是否修改成功

    > db.auth("wsy","wushaoyu")
    Error: Authentication failed.
    0
    > db.auth("wsy","WuShaoYu")
    1
    #可看出修改密码成功

     参考文档:

    https://docs.mongodb.com/manual/tutorial/enable-authentication/

    https://docs.mongodb.com/manual/core/security-built-in-roles/   

    https://blog.csdn.net/Keith003/article/details/80897085

  • 相关阅读:
    bzoj 5028小Z的加油店(D12 序列gcd)(线段树+树状数组)
    蒲公英
    [APIO2012]派遣(可并堆)(D11)
    AT1219 歴史の研究(回滚莫队)
    [USACO05DEC] 布局
    小B的询问
    [HEOI2012]采花(树状数组)(暑假D11)
    [JLOI2011]飞行路线 (暑假D3 拆点+dijkstra堆优化)
    [POI2012]FES-Festival
    [国家集训队]拉拉队排练
  • 原文地址:https://www.cnblogs.com/wushaoyu/p/10460928.html
Copyright © 2011-2022 走看看