Loading... <div class="tip share">请注意,本文编写于 574 天前,最后修改于 562 天前,其中某些信息可能已经过时。</div> ## MongoDB用户创建 MongoDB采用**基于角色的访问控制(RBAC)**来确定用户的访问。 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。 MongoDB系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。 ## 创建管理员用户 要在MongoDB部署中创建用户,请连接到部署,然后使用db.createUser()方法或createUser命令添加用户。 ``` use admin db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } ) ``` ## 添加数据库用户 创建指定数据库的用户,该用户只能访问该数据库。也可以为此数据库上的用户指定访问级别。 例如,创建一个在data数据库上具有读写访问权限的用户帐户。 ``` use data db.createUser( { user: "user01", pwd: "123456", roles: ["readWrite"] } ) ``` ## 验证身份验证 使用以下命令。 返回结果为1,表示认证成功。 ``` db.auth("user01", "123455") ``` ## 列出数据库的所有用户 ``` dn.getUsers() ``` ## 删除数据库用户 ``` db.dropUser("user01") ``` ## 创建带角色的用户 test数据库中创建用户:mynewuser,并向用户提供readWrite和dbAdmin角色。 ``` use test db.createUser( { user: "mynewuser", pwd: "myuser123", roles: [ "readWrite", "dbAdmin" ] } ); ``` ## 创建带角色的管理用户 管理数据库中创建一个名为 myadmin1 的用户,并给予用户对config数据库的 readWrite 访问权限,这样可以让用户更改分片分区的某些设置,例如平衡器设置。 ``` use admin db.createUser( { user: "myadmin1", pwd: "myadmin123", roles: [ { role: "readWrite", db: "config" }, "clusterAdmin" ] } ); ``` ## 权限 权限由指定的数据库资源(resource)以及允许在指定资源上进行的操作(action)组成。 > 1. 资源(resource)包括:数据库、集合、部分集合和集群; > 2. 操作(action)包括:对资源进行的增、删、改、查(CRUD)操作。 > **常用的内置角色** user:用户名 pwd:密码 roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选: Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system 具体角色: Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限。 Last modification:July 27, 2021 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请作者喝杯咖啡把~
One comment
Hello~OωO