甩祸 发表于 2018-10-25 09:58:00

MongoDB用户及权限管理(二):用户管理

  一、创建管理员账号

[*]  下面开始创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。
  > use admin
  switched to db admin
  > db.createUser(
  {
  user:"dba",
  pwd:"dba",
  roles:[ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
  )
  2.编辑mongodb配置文件,开启验证模块
  security:
  authorization: enabled
  3.重启mongod.
  4.再次登录mongodb
  #mongo
  > show dbs
  2017-01-10T19:30:30.924+0800 E QUERY    Error: listDatabases failed:{
  "ok" : 0,
  "errmsg" : "not authorized on admin to execute command{ listDatabases: 1.0 }",
  "code" : 13,
  "codeName" : "Unauthorized"
  }
  5.会报出如上错误,这是因为开启auth模块后,需要进行验证。如果需要使用刚才创建的管理员账户,则需要到admin库下进行验证,1表示验证成功。
  >use admin
  >db.auth('dba','dba')
  1
  6.验证成功,再次执行命令:
  > show dbs
  admin0.000GB
  local0.000GB
  即可执行成功。
  二、创建普通用户账号
  userAdminAnyDatabase的角色具有在任何数据库下创建用户的权限,下面用刚刚创建的dba用户创建普通用户。
  1.创建只读账号
  use db1
  db.createUser(
  {
  user:"test1",
  pwd:"test1",
  roles: [ { role: "read", db: "db1" } ]
  }
  )
  2.创建读写账号
  use db1
  db.createUser(
  {
  user:"test2",
  pwd:"test2",
  roles: [ { role: "readWrite", db: "db1" } ]
  }
  )
  注意:只有在当前库下创建的用户才能在当前库下进行验证,如果在admin库下创建的其他库的用户则需要在admin下进行验证。
  三、创建超级管理员用户
  MongoDB在V3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4个角色权限,类似于ORACLE的sysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的。当然如此高权限的用户还是不建议使用。
  db.createUser(
  {
  user:"dbroot",
  pwd:"dbroot",
  roles: [ { role: "root", db: "admin" } ]
  }
  )
  四、查看用户信息
  db.getUser("test1")
  > db.getUser("test1")
  {
  "_id" : "admin.test1",
  "user" : "test1",
  "db" : "admin",
  "roles" : [
  {
  "role" :"clusterAdmin",
  "db" :"admin"
  }
  ]
  }
  五、修改用户信息
  可修改用户的如下信息:
  角色、密码、customData
  db.updateUser( "test1",
  {
  customData:{employeeID:"0x3039"},
  roles:[
  {role:"read",db:"admin"}
  ],
  pwd:"test1password"
  }
  )
  六、修改用户密码
  db.changeUserPassword("user","password")
  七、删除用户
  db.system.users.remove({user:"user1"});
  db.dropUser("test1")
  八、授权给用户
  原有权限不变的情况下,授予readWrite,read admin的权限:
  db.grantRolesToUser(
  "test1",
  ["readWrite",
  {role: "read", db: "admin" }
  ]
  )
  九、回收权限
  回收test1用户的readWrite和read admin的权限。
  db.revokeRolesFromUser(
  "test1",
  [ {role: "read", db: "admin" },
  "readWrite"
  ]
  )

页: [1]
查看完整版本: MongoDB用户及权限管理(二):用户管理