• 安全和访问控制


    MongoDB的安全模式默认是关闭的

    绑定监听ip

    例如192.168.199.8上的MongoDB实例可使用命令如下:

    mongod  --bind_ip 127.0.0.1, 192.168.199.8

    设置监听端口

    MongoDB默认的监听端口是27017,为了安全起见,可以修改这个监听端口,避免恶意的连接尝试。在启动时或者配置文件中加上--port即可,使用命令:

    mongod  --port 36000

    MongoDB服务的端口设置为36000,则mongo客户端连接时也需要带端口,使用命令如下:

    mongo 127.0.0.1:36000

    用户认证

    启用认证

    启动MongoDB时加上--auth即可开启认证模式,使用命令:

    mongod --auth

    添加用户

    Root账号,可以对所有数据库进行操作

    >use admin

    >db.createUser(

      {

        user: "root",

        pwd: "abc123",

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

      }

    )

     

    1)创建管理员帐号

    >use admin

    >db.createUser(

      {

        user: "myUserAdmin",

        pwd: "abc123",

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

      }

    )

    2)创建普通帐号

    >use test

    >db.createUser(

      {

        user: "myTester",

        pwd: "xyz123",

        roles: [ { role: "readWrite", db: "test" },

                 { role: "read", db: "reporting" } ]

      }

    )

    >use mydb

    >db.createUser(

      {

        user: "mydbuser",

        pwd: "xyz123",

        roles: [ { role: "readWrite", db: "mydb" },

                 { role: "read", db: "test" } ]

      }

    )

    用户权限控制

    1)查看用户权限

    >use test

    >db.getUser("myTester")

    2)查看权限能执行哪些操作

    例如我们要看test数据库中read权限能执行哪些操作:

    >use test

    >db.getRole( "read", { showPrivileges: true } )

    3)授权

    >use test

    >db.grantRolesToUser(

        "myTester",

        [

          { role: "readWrite", db: "reporting" }

        ]

    )

    4)取消权限

    >use test

    >db.revokeRolesFromUser(

        "myTester",

        [

          { role: "readWrite", db: "reporting" }

        ]

    )

    用户登录

    1)启动mongo客户端时登录:

    mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

    参数--authenticationDatabase "admin"表示myUserAdmin用户在admin数据库下。

    /mongodb3.4/bin/mongo --host 192.168.1.201 -u "myTester" -p "xyz123"

    2)进入mongo客户端后再登录:

    mongo --port 27017

    >use admin

    >db.auth("myUserAdmin", "abc123" )

    输出1则表示登录成功。

    修改密码

    >db.changeUserPassword("myTester", "456789")

    myTester的密码修改为456789,需要admin管理员权限。

    删除用户

    >db.dropUser("myTester")

    需要admin管理员权限。

      Built-In Roles(内置角色):

        1. 数据库用户角色:readreadWrite;

        2. 数据库管理角色:dbAdmindbOwneruserAdmin

        3. 集群管理角色:clusterAdminclusterManagerclusterMonitorhostManager

        4. 备份恢复角色:backuprestore

        5. 所有数据库角色:readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase

        6. 超级用户角色:root  

        // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner userAdminuserAdminAnyDatabase

        7. 内部角色:__system

    Read:允许用户读取指定数据库

    readWrite:允许用户读写指定数据库

    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

    root:只在admin数据库中可用。超级账号,超级权限

  • 相关阅读:
    git提交到项目中自动部署
    vue纯前端导入导出excel
    VMware Workstation pro14 虚拟机下安装CentOS6.5图文教程
    [正睿集训2021] 杂题再讲
    #4 CF568E & CF613E & CF587D
    Atcoder Grand Contest 009&010
    [省选集训2022] 模拟赛4
    #3 CF536D & CF538G & CF559E
    [省选集训2022] 模拟赛7
    Atcoder Grand Contest 007&008
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11340035.html
Copyright © 2020-2023  润新知