• 2.4,2.6,3.0+各mongo版本的用户及权限添加方法


    mongo开启用户验证
    mongod数据库服务默认是不开启用户认证的,此时任何的client端都可以连接并访问mongo服务,只有是网络可以连通即可。
    如果需要支持用户认证的功能,则必须要先主动开启该功能,主要的方式就是在启动命令的时候添加一个--auth参数即可,如下清单

    /usr/bin/mongod --config /etc/mongodb.conf --auth

    通过上述命令启动的mongo服务就会支持认证机制,client连接时如果没有带上正确的用户名和密码的话则会报错。
    mongo的用户存储及权限
    mongo的用户分为2类,一类是admin用户,用户信息存储位置为admin数据库的system.users集合,admin用户为super user可以访问所有数据库,只有拥有对应的权限;
    另一类是普通数据库的用户,用户信息存储位置为对应数据库下的system.users集合,此类用户只拥有所在数据库的访问权限。

    需要注意的点:
    1、给mongo创建用户的时候,需要先创建一个admin用户,然后再创建具体数据库的用户。具体的步骤后面会讲到。
    2、创建用户前不要使用带--auth参数来启动mongo,需要以非认证模式启动,用户创建成功后再以认证模式启动。
    2.4以前版本

    ~# mongo
    MongoDB shell version: 2.3.*
    connecting to: test
    >
    >use admin
    >db.addUser("root", "root") ##读写权限
    >db.addUser("admin", "admin", true) ##只读权限
    >show tables
    >db.system.users.find()  ##查询super admin用户
    >
    >use youdb  ##切换到具体的业务DB
    >db.addUser("user", "user") ##读写权限
    >db.addUser("user2", "user2", true) ##只读权限
    >show tables
    >db.system.users.find()  ##查询youdb数据的用户

    2.4之后版本

    ~# mongo
    MongoDB shell version: 2.4.*
    connecting to: test
    >
    >use admin
    >db.addUser({
                user:'root',
                pwd:'root',
                roles:[
                    "readWrite",  ##admin数据库的读写权限
                     "dbAdmin", ##admin数据库的管理权限
                     "userAdmin"], ##admin数据库的用户管理权限
                otherDBRoles:{
                     youdb:[
                         "readWrite", ##youdb数据库的读写权限
                         "dbAdmin", ##youdb数据库的管理权限
                         "userAdmin" ##youdb数据库的用户管理权限
                         ]}
                })  
    >db.addUser({user:'admin',pwd:'admin',roles:["read"]})   ##只读权限
    >show tables
    >db.system.users.find()  ##查询super admin用户
    >
    >use youdb  ##切换到具体的业务DB
    >db.addUser({user:'user',pwd:'user',roles:["readWrite"]) ##读写权限
    >db.addUser({user:'user2',pwd:'user2',roles:["read"]) ##只读权限
    >show tables
    >db.system.users.find()  ##查询youdb数据的用户

    2.6之后版本

    ~# mongo
    MongoDB shell version: 2.6.*
    connecting to: test
    >
    >use admin
    >db.addUser({
                user:'root',
                pwd:'root',
                roles:[
                    {
                        role:"dbAdminAnyDatabase",
                        db:"admin"
                    },
                    {
                        role:"userAdminAnyDatabase",##任意数据库的用户管理权限
                        db:"admin"
                    },
                    {
                        role:"userAdmin",##youdb数据库的用户管理权限
                        db:"youdb"
                    },
                    {
                        role:"readWrite",##youdb数据库的读写权限
                        db:"youdb"
                    }]
                })  
    >show tables
    >db.system.users.find()  ##查询super admin用户
    >
    >use youdb  ##切换到具体的业务DB
    >db.addUser({
                user:'user',
                pwd:'user',
                roles:[
                    {
                        role:"read",##youdb数据库的只读权限
                        db:"youdb"
                    },{
                        role:"readWrite",##youdb数据库的读写权限
                        db:"youdb"
                    }]
                })  
    >show tables
    >db.system.users.find()  ##查询youdb数据的用户

    3.0之后版本

    ~# mongo
    MongoDB shell version: 3.2.*
    connecting to: test
    >
    >use admin
    >db.createUser({
                user:'root',
                pwd:'root',
                roles:[
                    {
                        role:"dbAdminAnyDatabase",
                        db:"admin"
                    },
                    {
                        role:"readWriteAnyDatabase",##任意数据库的读写权限
                        db:"admin"
                    },
                    {
                        role:"userAdmin",##youdb数据库的用户管理权限
                        db:"youdb"
                    },
                    {
                        role:"readWrite",##youdb数据库的读写权限
                        db:"youdb"
                    }]
                })  
    >show tables
    >db.system.users.find()  ##查询super admin用户
    >
    >use youdb  ##切换到具体的业务DB
    >db.addUser({
                user:'user',
                pwd:'user',
                roles:[
                    {
                        role:"read",##youdb数据库的只读权限
                        db:"youdb"
                    },{
                        role:"readWrite",##youdb数据库的读写权限
                        db:"youdb"
                    }]
                })  
    >show tables
    >db.system.users.find()  ##查询youdb数据的用户

    mongo用户认证登录

    ~# mongo
    MongoDB shell version: 2.4.9
    connecting to: test
    >
    >use admin
    >db.auth('root', 'root')
    >show dbs


    ~# mongo
    MongoDB shell version: 2.4.9
    connecting to: test
    >
    >use youdb
    >db.auth('user', 'user')
    >show dbs
    ————————————————
    版权声明:本文为CSDN博主「上帝De助手」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/five3/article/details/54632932

  • 相关阅读:
    sprintf_s的使用
    DHCP的若干原理解释
    常用在线转换工具
    spring事务隔离级别
    Spring3声明式事务处理事务无法回滚rollback分析(annotation与xml配置混用)
    SQL按时间段统计(5分钟统计一次访问量为例,oracle统计)
    java对象传递小解析
    java、javac -version不一致(java编译及运行环境不一致)的环境变量设置问题解决
    ibator自动代码生成
    Velocity中加载vm文件的三种方式
  • 原文地址:https://www.cnblogs.com/seasonzone/p/14523291.html
Copyright © 2020-2023  润新知