zoukankan      html  css  js  c++  java
  • MongoDB快速入门学习笔记7 MongoDB的用户管理操作

    1、修改启动MongoDB时要求用户验证
    加参数 --auth 即可。
    现在我们把MongoDB服务删除,再重新添加服务

    mongod --dbpath "D:workMongoDBdata" --logpath "D:workMongoDBlogmongodb.log" --install --serviceName "MongoDB" --auth

    2、创建用户,并使用创建的用户登录
    打开shell操作界面,默认test数据,再查看所有数据库,发现报错,因为没有用户验证。
    使用db.auth("user","pwd")进行用户验证。
    user:用户名
    pwd:密码


    因为数据库中没有用户,所以需要先使用无用户验证的方式启动数据,在admin数据库下新建用户。
    db.createUser({user:"", pwd:"", roles:[{role:"", db:""}]})
    在当前数据库下创建一个用户
    user:用户名
    pwd:密码
    roles:角色信息
    [role:角色名, db:对指定数据库的操作]

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

    在使用用户验证的方式启动数据库,在数据库admin中,使用admin登录
    > db.auth("admin","admin")
    1

    状态1表示验证成功,0表示验证失败

    创建用户默认给当前使用的数据下创建用户,
    例如:当前使用的数据是admin,在admin数据下新建用户
    db.createUser({user:"zyh", pwd:"zyh", roles:[{role:"readWrite", db:"zyhdb"}]})
    在admin数据库下使用zyh登录,可读写zyhdb的collection。
    当在zyhdb下,无法使用zyh登录,因为用户zyh是在admin数据库下。

    3、查看当前数据下的用户
    show users 显示当前数据库下所有的用户
    使用有用户管理权限的用户登录才能看见,例如使用zyh登录后,执行会报错;使用admin登录后,显示用户

    > db.auth("zyh","zyh")
    1
    > show users
    2016-06-01T20:32:30.639+0800 E QUERY [thread1] Error: not authorized on admin to execute command { usersInfo: 1.0 } :
    _getErrorWithCode@src/mongo/shell/utils.js:25:13
    DB.prototype.getUsers@src/mongo/shell/db.js:1523:1
    shellHelper.show@src/mongo/shell/utils.js:743:9
    shellHelper@src/mongo/shell/utils.js:650:15
    @(shellhelp2):1:1
    
    > db.auth("admin","admin")
    1
    > show users
    {
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "roles" : [
    {
    "role" : "userAdminAnyDatabase",
    "db" : "admin"
    }
    ]
    }
    {
    "_id" : "admin.zyh",
    "user" : "zyh",
    "db" : "admin",
    "roles" : [
    {
    "role" : "readWrite",
    "db" : "zyhdb"
    }
    ]
    }

    还可以使用db.getUsers()查看所有的用户
    使用db.getUser("user")查询指定用户的具体信息

    4、修改用户信息
    db.changeUserPassword("user", "newpwd"),修改密码
    user:用户名
    newpwd:新的密码


    db.updateUser("user", {roles:[{role:"", db:""}]})
    修改用户信息

    db.grantRolesToUser("user", [{role:"", db:""}])
    追加角色

    db.revokeRolesFromUser("user", [{role:"", db:""}])
    取消角色

    5、删除用户
    db.dropUser("user") 删除指定用户

    db.dropAllUsers() 删除当前数据下所有用户

    附:常用内置角色说明
    数据库用户角色(每个数据库都有的角色)
    read 对non-system集合的读取权限,以及以下system集合的读取权限:system.indexes,system.js,system.namespaces
    readWrite 对non-system集合的读写权限,以及system.js上的读写权限
     
     
    数据库管理角色(每个数据库都包含的数据管理角色)
    dbAdmin 完成管理性任务的权限,比如schema相关任务、索引、统计信息收集。不能用于管理用户和角色
    dbOwner 管理数据库需要的所有权限。包含(readWrite、dbAdmin、userAdmin角色的权限)
    userAdmin 在当前数据库创建和修改角色和用户的权限
     
     
    集群管理角色
    admin数据库包含以下角色用于管理整个系统,而不是只针对单个数据库
    clusterAmin 提供集群管理的最大权限。包含了clusterManager、clusterMonitor、hostManager角色的权限
    clusterManager 管理和监控集群,可以访问local和config数据库。
    clusterMonitor 对集群的读权限
    hostManager 管理和健康servers
     
     
    备份和还原角色
    admin数据库包含以下角色用于备份和还原数据
    backup 备份权限
    restore 还原权限
     
     
    all-database roles
    admin数据提供以下角色,对所有数据库都有效。
    readAnyDatabase 提供对所有数据库的读权限
    readWriteAnyDatabase 提供对所有数据库的写权限
    userAdminAnyDatabase 提供对所有数据库用户的管理权限
    dbAdminAnyDatabase 对所有数据库的dbAdmin权限
     
     
    超级角色
    角色 说明
    root 拥有最高权限

    另外角色也可以自定义设置。

  • 相关阅读:
    js产生随机数
    Ajax库的编写及使用
    css水平竖直居中方式
    各大网站css初始化代码【转】
    文档对象模型-DOM(二)
    文档对象模型-DOM(一)
    nav标签使用说明
    html5学习整理-0311
    Python OpenCV —— Arithmetic
    关于python3 OpenCV的安装和配置
  • 原文地址:https://www.cnblogs.com/zhangyanhu/p/5551137.html
Copyright © 2011-2022 走看看