mongodb基础之用户权限管理实例教程

  • A+
所属分类:MongoDB

前言

本文主要先容了mongodb用户权限治理的相关内容,关于接着前次实践的部门,下面话不多说了,来一路看看具体的先容吧

启动mongodb并衔接

./bin/mongod -f conf/mongod.conf
./bin/mongo 127.0.0.1:12345

查看默认的数据库环境

> show dbs
admin 0.000GB
local 0.000GB

> use admin
switched to db admin
> show tables
system.version

可以看到,今朝数据库里除了一些根本信息,什么都没有

在创立设置用户权限之前,先相识一下文档常识

创立用户

数据库内建脚色

数据库用户脚色

read (读取指定数据库)
readWrite (读写指定数据库)

数据库治理脚色

dbAdmin (数据库治理员)
dbOwner (数据库所有者,归并了 readWrite, dbAdmin and userAdmin roles.)
userAdmin (用户治理员,可以找指定数据库里创立、删除和治理用户)

集群治理脚色

clusterAdmin (集群治理员)
clusterManager (集群治理者)
clusterMonitor (聚拢监督者)
hostManager (主机治理者)

备份规复脚色

backup (备份)
restore (还原)

所稀有据库脚色

readAnyDatabase (读任何数据库)
readWriteAnyDatabase (读写任何数据库)
userAdminAnyDatabase (用户治理任何数据库)
dbAdminAnyDatabase (随意率性数据库治理员)

超等用户脚色

root

内部脚色

__system

有了创立语法,和参数阐明,接下来开端实践.

注意,还有一点,账号是随着数据库绑定的,在谁人库里授权,就在谁人库里验证(auth)
不然会失败

创立 账号治理授权权限 的账号

> db.createUser(
... {
... user: 'admin',
... pwd: '123456',
... roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]
... }
... )
Successfully added user: {
  "大众user"大众 : "大众admin"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众userAdminAnyDatabase"大众,
      "大众db"大众 : "大众admin"大众
    }
  ]
}

然撤退退却出数据库

> use admin
switched to db admin
> db.shutdownServer()

从新启动mongodb,记得在设置装备摆设文件mongod.conf里加上 auth = true

./bin/mongod -f conf/mongod.conf
./bin/mongo 127.0.0.1:12345
> show dbs # 没有验证,没有权限,会失足
"大众errmsg"大众 : "大众not authorized on admin to execute command
> use admin
> db.auth('admin', '123456')
1
# 返回 1 表现授权胜利,0表现失败
> show dbs #已经授权,可以查看了

创立 读、读写权限的账户

> use book
switched to db book
> db.createUser(
... {
... user: 'zhangsan',
... pwd: 'zhangsan',
... roles: [{role: 'read', db: 'book'}]
... }
... )
Successfully added user: {
  "大众user"大众 : "大众zhangsan"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众read"大众,
      "大众db"大众 : "大众book"大众
    }
  ]
}
> db.createUser(
... {
... user: 'lisi',
... pwd: 'lisi',
... roles: [{role: 'readWrite', db: 'book'}]
... }
... )
Successfully added user: {
  "大众user"大众 : "大众lisi"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众readWrite"大众,
      "大众db"大众 : "大众book"大众
    }
  ]
}
> show users
{
  "大众_id"大众 : "大众book.lisi"大众,
  "大众user"大众 : "大众lisi"大众,
  "大众db"大众 : "大众book"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众readWrite"大众,
      "大众db"大众 : "大众book"大众
    }
  ]
}
{
  "大众_id"大众 : "大众book.zhangsan"大众,
  "大众user"大众 : "大众zhangsan"大众,
  "大众db"大众 : "大众book"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众read"大众,
      "大众db"大众 : "大众book"大众
    }
  ]
}

然后验证用户权限是否正确

> db.book.insert({book: '小人书'}) # 没验证,会失足
WriteResult({
  "大众writeError"大众 : {
    "大众code"大众 : 13,
    "大众errmsg"大众 : "大众not authorized on book to execute command { insert: \"大众book\"大众, docum
ents: [ { _id: ObjectId('5959b56edcc047dfe5c9b336'), book: \"大众小人书\"大众 } ], ordered: true }"大众
  }
})
> db.auth('lisi', 'lisi')
1
> db.book.insert({book: '小人书'})
WriteResult({ "大众nInserted"大众 : 1 })
> db.auth('zhangsan', 'zhangsan') # 用户切到 zhangsan
1
> db.book.find() # 可以查看
{ "大众_id"大众 : ObjectId("大众5959b59fdcc047dfe5c9b337"大众), "大众book"大众 : "大众小人书"大众 }
> db.book.insert({book: '择天记'}) # 没有write权限,会失败
WriteResult({
  "大众writeError"大众 : {
    "大众code"大众 : 13,
    "大众errmsg"大众 : "大众not authorized on book to execute command { insert: \"大众book\"大众, docum
ents: [ { _id: ObjectId('5959b650dcc047dfe5c9b338'), book: \"大众择天记\"大众 } ], ordered: true }"大众
  }
})

创立 root 超等权限账号

这个超等权限包含 授权 和 操控数据库聚拢数据,比拟简单,只必要把role设置成 root

> use admin
switched to db admin
> db.auth('admin', '123456')
1
> db.createUser(
... {
... user: 'dongsheng',
... pwd: '123456',
... roles: [{role: 'root', db: 'admin'}]
... }
... )
Successfully added user: {
  "大众user"大众 : "大众dongsheng"大众,
  "大众roles"大众 : [
    {
      "大众role"大众 : "大众root"大众,
      "大众db"大众 : "大众admin"大众
    }
  ]
}
> db.auth('dongsheng', '123456')
1
> use book
switched to db book
> db.book.insert({book: '笑傲江湖'})
WriteResult({ "大众nInserted"大众 : 1 })
> db.book.find()
{ "大众_id"大众 : ObjectId("大众5959b59fdcc047dfe5c9b337"大众), "大众book"大众 : "大众小人书"大众 }
{ "大众_id"大众 : ObjectId("大众5959b7abdcc047dfe5c9b339"大众), "大众book"大众 : "大众笑傲江湖"大众 }

总结

以上便是这篇文章的全体内容了,愿望本文的内容对年夜家的进修或者事情具有必定的参考进修代价,假如有疑问年夜家可以留言交流,谢谢年夜家对剧本之家的支撑。

您可能感兴致的文章:

mongodb 添加用户及权限设置详解mongodb权限设置之添加治理员、通俗用户的办法MongoDB为用户设置拜访权限给MongoDB添加用户权限办法分享Windows下MongoDB设置装备摆设用户权限实例Mongodb 3.2.9开启用户权限认证问题的步调详解MongoDB系列教程(四):设置用户拜访权限

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: