• mongodb 设置用户密码权限


    1 设置管理员账户

    use admin
    db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

    mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。

    2 验证

    db.auth("useradmin", "adminpassword")

    如果返回1,则表示成功。

    3 修改配置文件(注意缩进)

    sudo vi /etc/mongod.conf

    #security:
    security:
      authorization: enabled

    4 重启mongodb 

    sudo service mongod restart

    5 创建普通用户

    进入mongodb,用第3步的 管理员账户登录,用该账户创建其他数据库管理员账号

      +先进行管理员认证

    use admin
    db.auth("useradmin", "adminpassword")

      +设置其他库的账号密码及权限

    use yourdatabase
    db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })

      rote:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等

      

    • Read:允许用户读取指定数据库
    • readWrite:允许用户读写指定数据库
    • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    • root:只在admin数据库中可用。超级账号,超级权限
    6 python 连接脚本
    #coding=utf-8
    #导入模块
    from pymongo import MongoClient 
    #建立连接
    client=MongoClient("localhost",27017)
    #数据库名admin
    db=client.admin
    #认证用户密码
    db.authenticate('root','123456')
    #创建集合和数据
    db.test.insert({"name":"this is test"})
    col=db.test
    #打印数据输出
    for item in col.find():
        print item
    #关闭连接
    client.close()
    7 注意
    mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
    use foo
    db.createUser(
      {
        user: "simpleUser",
        pwd: "simplePass",
        roles: [ { role: "readWrite", db: "foo" },
                 { role: "read", db: "bar" } ]
      }
    )
    现在我们有了一个普通用户
    用户名:simpleUser
    密码:simplePass
    权限:读写数据库 foo, 只读数据库 bar。
    
    注意
    use foo表示用户在 foo 库中创建,就一定要 foo 库验证身份,即用户的信息跟随随数据库。
    比如上述 simpleUser 虽然有 bar 库的读取权限,但是一定要先在 foo 库进行身份验证,直接访问会提示验证失败。 use foo db.auth(
    "simpleUser", "simplePass") use bar show collections 还有一点需要注意,如果 admin 库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限

    参考:

    https://www.2cto.com/database/201802/724340.html

    https://www.jianshu.com/p/79caa1cc49a5

    https://blog.51cto.com/1767340368/2092960

  • 相关阅读:
    014-CallbackServlet代码
    PaymentServlet代码
    013-PaymentUtils工具类模板
    案例30-在线支付
    案例29-购物车提交订单
    案例28-清空购物车
    案例27-购物车删除单一商品
    案例26-购物车
    案例25-servlet的抽取
    在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称
  • 原文地址:https://www.cnblogs.com/hei-hei-hei/p/10601016.html
Copyright © 2020-2023  润新知