mongodb基础之用户权限管理实例教程
前言
本文主要介绍了mongodb用户权限管理的相关内容,关于接着上次实践的部分,下面话不多说了,来一起看看详细的介绍吧
启动mongodb并连接
./bin/mongod-fconf/mongod.conf ./bin/mongo127.0.0.1:12345
查看默认的数据库情况
>showdbs admin0.000GB local0.000GB >useadmin switchedtodbadmin >showtables system.version
可以看到,目前数据库里除了一些基本信息,什么都没有
在创建设置用户权限之前,先了解一下文档知识
创建用户
#demo db.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,dbAdminanduserAdminroles.)
- 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'}] ...} ...) Successfullyaddeduser:{ "user":"admin", "roles":[ { "role":"userAdminAnyDatabase", "db":"admin" } ] }
然后退出数据库
>useadmin switchedtodbadmin >db.shutdownServer()
重新启动mongodb,记得在配置文件mongod.conf里加上auth=true
./bin/mongod-fconf/mongod.conf ./bin/mongo127.0.0.1:12345 >showdbs#没有验证,没有权限,会出错 "errmsg":"notauthorizedonadmintoexecutecommand >useadmin >db.auth('admin','123456') 1 #返回1表示授权成功,0表示失败 >showdbs#已经授权,可以查看了
创建读、读写权限的账户
>usebook switchedtodbbook >db.createUser( ...{ ...user:'zhangsan', ...pwd:'zhangsan', ...roles:[{role:'read',db:'book'}] ...} ...) Successfullyaddeduser:{ "user":"zhangsan", "roles":[ { "role":"read", "db":"book" } ] } >db.createUser( ...{ ...user:'lisi', ...pwd:'lisi', ...roles:[{role:'readWrite',db:'book'}] ...} ...) Successfullyaddeduser:{ "user":"lisi", "roles":[ { "role":"readWrite", "db":"book" } ] } >showusers { "_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":"notauthorizedonbooktoexecutecommand{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":"notauthorizedonbooktoexecutecommand{insert:\"book\",docum ents:[{_id:ObjectId('5959b650dcc047dfe5c9b338'),book:\"择天记\"}],ordered:true}" } })
创建root超级权限账号
这个超级权限包括授权和操控数据库集合数据,比较简单,只需要把role设置成root
>useadmin switchedtodbadmin >db.auth('admin','123456') 1 >db.createUser( ...{ ...user:'dongsheng', ...pwd:'123456', ...roles:[{role:'root',db:'admin'}] ...} ...) Successfullyaddeduser:{ "user":"dongsheng", "roles":[ { "role":"root", "db":"admin" } ] } >db.auth('dongsheng','123456') 1 >usebook switchedtodbbook >db.book.insert({book:'笑傲江湖'}) WriteResult({"nInserted":1}) >db.book.find() {"_id":ObjectId("5959b59fdcc047dfe5c9b337"),"book":"小人书"} {"_id":ObjectId("5959b7abdcc047dfe5c9b339"),"book":"笑傲江湖"}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。