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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。