Java MongoDB:(五)MongoDB 的用户与权限管理

MongoDB 的用户与权限管理

    • 1.Mongodb 用户权限列表
    • 2.MongoDB 用户使用
      • 2.1 创建 DB 管理用户
        • 2.1.1 切换到 Admin 库
        • 2.1.2 查看 admin 中的用户
        • 2.1.3 db.createUser 函数
        • 2.1.4 创建管理员用户
        • 2.1.5 重启 MongoDB
        • 2.1.6 使用权限方式启动 MongoDB
        • 2.1.7 用户认证
      • 2.2 更新用户角色
        • 2.2.1 更新角色语法格式
      • 2.3 更新用户密码
        • 2.3.1 更新密码方式一的语法格式
        • 2.3.2 更新密码方式二的语法格式
      • 2.4 删除用户

  • Mongodb 作为时下最为热门的数据库,那么其安全验证也是必不可少的,否则一个没有验证的数据库暴露出去,任何人可随意操作,这将是非常危险的。我们可以通过创建用户的方式来降低风险。

1.Mongodb 用户权限列表

用户 描述
Read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile
userAdmin 允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限
dbAdminAnyDatabase 只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限
root 只在 admin 数据库中可用。超级账号,超级权限

2.MongoDB 用户使用

2.1 创建 DB 管理用户

  • mongodb 有一个用户管理机制,简单描述为,有一个管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。
  • 管理员通常没有数据库的读写权限,只有操作用户的权限, 因此我们只需要赋予管理员userAdminAnyDatabase 角色即可。
  • 另外管理员账户必须在 admin 数据库下创建。

2.1.1 切换到 Admin 库

  • 管理员需要在 admin 数据库下创建,所以我们需要切换到 admin 数据库
    设置

2.1.2 查看 admin 中的用户

  • 我们可以通过 db.system.users.find()函数来查看 admin 库中的所有用户信息。
    Java MongoDB:(五)MongoDB 的用户与权限管理_第1张图片
  • 目前在 admin 库中没有用户,所以查无结果。

2.1.3 db.createUser 函数

  • 在 MongoDB 中可以使用 db.createUser({用户信息})函数创建用户
db.createUser({ 
	user: "",
	pwd: "",
	customData: { <any information> },
	roles: [
		{ role: "", db: "" } | "",
		...
	]
});
  • user:新建用户名。
  • pwd:新建用户密码
  • customData:存放一些用户相关的自定义数据,该属性也可忽略。
  • roles:数组类型,配置用户的权限。

2.1.4 创建管理员用户

  • 我们现在需要在 admin 库中创建一个名为 dqcgm的管理员用户,密码为 dqcgmpwd。
db.createUser({ 
	user: "dqcgm",
	pwd: "dqcgmpwd",
	roles: [
		{ 
			role: "userAdminAnyDatabase'", db: "admin" 
		} 
	]
});

2.1.5 重启 MongoDB

  • 在管理员账户创建完成后,我们需要重新启动 MongoDB,并开启验证。
  • 重新启动函数:db.shutdownServer()。
    设置

2.1.6 使用权限方式启动 MongoDB

  • 在默认的情况下 MongoDB 是不开启用户认证的。如果我们添加用户,那么需要开启用户认证机制。通过修改 mongodb.conf 配置文件,在文件中添加 auth=true 即可。
    Java MongoDB:(五)MongoDB 的用户与权限管理_第2张图片
  • 修改完成后启动 MongoDB

2.1.7 用户认证

  • 创建管理员后,需要认证方可使用该用户,否则会提示需要认证。
    Java MongoDB:(五)MongoDB 的用户与权限管理_第3张图片
  • 认证函数:db.auth(‘用户名’,’密码’)
  • 如果结果返回 1,则表示认证成功,返回 0 则表示认证失败。
  • 登录成功后可查询用户

2.2 更新用户角色

  • 如果我们需要对已存在的用户的角色做修改,那么我们可以使用 db.updateUser()函数来更新用户角色。注意,该函数需要当前用户具有 userAdminAnyDatabase 或者更高的权限。

2.2.1 更新角色语法格式

db.updateUser("用户名", {"roles":[{"role":"角色名称"},{"更新项 2":"更新内容"}]})

2.3 更新用户密码

更新用户密码有两种方式:

  • 使用 db.updateUser()函数更新密码。
  • 使用 db.changeUserPassword()函数更新密码

2.3.1 更新密码方式一的语法格式

  • db.updateUser(“用户名”,{“pwd”:“新密码”})

2.3.2 更新密码方式二的语法格式

  • db.changeUserPassword(“用户名”,“新密码”)

2.4 删除用户

  • 通过 db.dropUser()函数可删除指定用户。删除成功后会返回 true。在删除用户时需要切换到创建用户时所指定的数据库中才可以删除。注意:需要使用具有 userAdminAnyDatabse角色管理员用户才可以删除其他用户。

你可能感兴趣的:(高性能数据处理,NoSQL,分库分表,java,mongodb,用户,权限管理,数据库)