美文网首页个人学习
MongoDB权限认证

MongoDB权限认证

作者: 唯爱熊 | 来源:发表于2019-12-26 09:49 被阅读0次

    1.权限认证的开启步骤

    1.先在没有开启用户认证的条件下,创建具备管理员权限的用户
    2.先关闭mongo,配置文件打开安全认证参数
    3.使用管理用户登录,创建其他的普通用户
    4.退出管理员登录,切换到普通用户登录,测试

    注意:创建和删除普通用户只能使用管理员用户登录后切换到对应的验证库才能创建和删除。

    2.注意

    验证库: 建立用户时use到的库,在使用用户时,要加上验证库才能登陆。
    
    对于管理员用户,必须在admin下创建.
    1. 建用户时,use到的库,就是此用户的验证库
    2. 登录时,必须明确指定验证库才能登录
    3. 通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
    4. 如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的.
    5. 从3.6 版本开始,不添加bindIp参数,默认不让远程登录,只能本地管理员登录。
    

    3. 用户创建语法

    use admin 
    db.createUser
    {
        user: "<name>",
        pwd: "<cleartext password>",
        roles: [
           { role: "<role>",
         db: "<database>" } | "<role>",
        ...
        ]
    }
    
    基本语法说明:
    user:用户名
    pwd:密码
    roles:
        role:角色名
        db:作用对象 
        
    role:root, readWrite,read   
    验证数据库:
    mongo -u oldboy -p 123 10.0.0.53/hjt
    

    4. 用户管理例子

    #创建超级管理员:管理所有数据库(必须use admin再去创建)
    $ mongo
    use admin
    db.createUser(
    {
        user: "root",
        pwd: "123456",
        roles: [ { role: "root", db: "admin" } ]
    }
    )
    

    验证用户

    db.auth('root','123456')
    

    配置文件中,加入以下配置

    security:
      authorization: enabled
    

    重启mongodb

    [root@mongodb01 ~]# mongod -f /mongodb/conf/mongo.conf --shutdown 
    [root@mongodb01 ~]# mongod -f /mongodb/conf/mongo.conf 
    

    登录验证

    [root@mongodb01 ~]# mongo -uroot -p123456  admin
    [root@mongodb01 ~]# mongo -uroot -p123456  10.0.0.72/admin
    
    或者
    mongo
    use admin
    db.auth('admin','123456')
    

    查看用户:

    use admin
    db.system.users.find().pretty()
    

    创建应用用户

    use write
    db.createUser(
        {
            user: "mysqun",
            pwd: "123456",
            roles: [ { role: "readWrite" , db: "write" } ]
        }
    )
    
    mongo  -uwrite -p123456 --authenticationDatabase write
    

    创建一个普通用户对多个库拥有不同的权限

    use test
    db.createUser(
      {
        user: "hjt",
        pwd: "123456",
        roles: [ { role: "readWrite", db: "hjt" },
                    {role:"read",db:"weiaixong"} 
      ]
      }
    )
    

    修改用户权限

    use test
    db.updateUser(
      'mysun',
      { 
        pwd: "123456",
        roles: [ { role: "readWrite", db: "write" },
                     { role: "read", db: "read" } ,
                 { role: "readWrite", db: "test" }
                 ]
                 
      }
    )
    

    查询mongodb中的用户信息

    mongo -uroot -proot123 10.0.0.53/admin
    db.system.users.find().pretty()
    

    5.删除用户(root身份登录,use到验证库)

    删除用户
    db.createUser({user: "hjt",pwd: "123456",roles: [ { role: "readWrite" , db: "oldboy1" } ]})
    mongo -uroot -p123456 10.0.0.53/admin
    use oldboy1
    db.dropUser("hjt")
    

    6. 用户管理注意事项

    1. 建用户要有验证库,管理员admin,普通用户是要管理的库
    2. 登录时,注意验证库
    mongo -umysqun -p123455 10.0.0.72:27017/write
    3. 重点参数
    net:
       port: 27017
       bindIp: 10.0.0.72,127.0.0.1
    security:
       authorization: enabled
    

    7.与用户相关的命令

    db.auth() 将用户验证到数据库。
    db.changeUserPassword() 更改现有用户的密码。
    db.createUser() 创建一个新用户。
    db.dropUser() 删除单个用户。
    db.dropAllUsers() 删除与数据库关联的所有用户。
    db.getUser() 返回有关指定用户的信息。
    db.getUsers() 返回有关与数据库关联的所有用户的信息。
    db.grantRolesToUser() 授予用户角色及其特权。
    db.removeUser() 已过时。从数据库中删除用户。
    db.revokeRolesFromUser() 从用户中删除角色。
    db.updateUser() 更新用户数据。
    

    相关文章

      网友评论

        本文标题:MongoDB权限认证

        本文链接:https://www.haomeiwen.com/subject/hdlkoctx.html