千家信息网

mongodb基础之用户权限管理的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了mongodb基础之用户权限管理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。启动mongodb并连接./
千家信息网最后更新 2026年11月03日mongodb基础之用户权限管理的示例分析

这篇文章主要介绍了mongodb基础之用户权限管理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

启动mongodb并连接

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

查看默认的数据库情况

> show dbsadmin 0.000GBlocal 0.000GB> use adminswitched to db admin> show tablessystem.version

可以看到,目前数据库里除了一些基本信息,什么都没有

在创建设置用户权限之前,先了解一下文档知识

创建用户

# demodb.createUser( { user: "reportsUser", pwd: "12345678", roles: [  { role: "read", db: "reporting" },  { role: "read", db: "products" },  { role: "read", db: "sales" },  { role: "readWrite", db: "accounts" } ] })

数据库内建角色

数据库用户角色

  • 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 adminswitched 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 bookswitched 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\", documents: [ { _id: ObjectId('5959b56edcc047dfe5c9b336'), book: \"小人书\" } ], ordered: true }"  }})> db.auth('lisi', 'lisi')1> db.book.insert({book: '小人书'})WriteResult({ "nInserted" : 1 })> db.auth('zhangsan', 'zhangsan') # 用户切到 zhangsan1> 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\", documents: [ { _id: ObjectId('5959b650dcc047dfe5c9b338'), book: \"择天记\" } ], ordered: true }"  }})

创建 root 超级权限账号

这个超级权限包括 授权 和 操控数据库集合数据,比较简单,只需要把role设置成 root

> use adminswitched 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 bookswitched to db book> db.book.insert({book: '笑傲江湖'})WriteResult({ "nInserted" : 1 })> db.book.find(){ "_id" : ObjectId("5959b59fdcc047dfe5c9b337"), "book" : "小人书" }{ "_id" : ObjectId("5959b7abdcc047dfe5c9b339"), "book" : "笑傲江湖" }

感谢你能够认真阅读完这篇文章,希望小编分享的"mongodb基础之用户权限管理的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 数据库 管理 用户 权限 角色 小人 小人书 管理员 篇文章 账号 验证 集群 基础 示例 分析 备份 江湖 知识 管理者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 有格互联网科技 上海睿民互联网科技有限公司 互联网科技网 互联网金融监管科技数据 网络科技有限互联网 关于新基建和互联网科技 亿人帮互联网科技 移动互联网年度科技创新 坤平互联网科技 链环科技传统企业怎么转型互联网 东莞新华互联网科技学校 互联网科技公司营业执照怎么办理 互联网第三次科技革命特征 广州有谷有贝互联网科技有限公司 信承诺互联网科技有限公司 吉林省码上互联网科技电话 广西科技产业互联网是什么 盐城市攀科互联网科技有限公司 上海互联网科技园景观 互联网络科技有限公司 互联网科技论文 宜安科技 互联网金融 润盈互联网科技 科技大学互联网专业好不好 受益于互联网科技的高速发展 互联网科技公司实习生 玉溪新华互联网科技好不好 上海京穆互联网科技有限公司 杭州融税互联网科技有限公司
0