mongodb用户权限修改,删除以及robomongo显示问题
环境
mongodb:3.4
robomongo:1.0.RC1
需求
之前我介绍过,mongodb用户权限管理配置,之后我自己有个这样的想法,能不能像MySQL
客户端那样,一次可以显示多个数据库?
如图:
而robomongo
客户端如图:
刚开始我以为,我只需要给yutao
这个账号,再授予其他数据库的权限,就ok
.
创建数据库
mongodb是没有创建数据库的命令的,一般是这么做:
# 使用use命令切换到myTest数据库,若没有系统会自动创建
# 如果我们什么也不干,数据库会被系统回收掉
>use myTest
# 创建一个集合,并创建数据
>db.myuser.insert({"name":"yutao", age:24})
# 上面这条命令我们并没有显式创建集合`myuser`
# mongodb会自动帮我们创建。
# 这样数据库和一个集合(类似于表的概念)我们就创建好了
现在我再把该数据库授权给账号yutao
。
修改用户权限
进入mongodb
的安装目录中的bin
目录,再执行命令:mongo.exe
,
接着敲如下命令:
>db.grantRolesToUser(
... "yutao",
... [{role:"readWrite", db:"myTest"}]
... )
以上命令意思是:修改账号yutao
的权限,给其增加个数据库myTest
的读写权。
注:
①账号yutao
,原本具有数据库test
的读写权。
②这里我使用的是db.grantRolesToUser()
命令,而没有使用db.updateUser()
命令的原因是,后者会替换账号的原有的角色,而前者是追加。通俗点讲就是:
账号yutao
,原有权限A
,我现在想再给它一个权限B
,使用updateUser
呢,是把A权限
替换为B权限
,也就是现在账号yutao
,只有B权限
,而grantRolesToUser
,是追加一个B权限
,即账号yutao
,即有A权限
,又有B权限
。
这时账号yutao
,就有了:
①数据库test
的读写权。
②数据库myTest
的读写权。
在admin
数据库中记录如下:
{"_id" : "test.yutao","user" : "yutao","db" : "test","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "qgewkOikdl4c/tXTAjd+4Q==","storedKey" : "0k7fgg42EFwmrrykGUsxotvL/x0=","serverKey" : "LvjDxD/rbSVgMUEixrbbbQF5BBg="}},"roles" : [ {"role" : "readWrite","db" : "myTest"}, {"role" : "readWrite","db" : "test"}]
}
官方链接:
db.grantRolesToUser()
db.updateUser()
这里我再随带讲下删除权限
删除权限
cmd
窗口敲如下命令:
> db.revokeRolesFromUser("yutao",
... [{role:"read", db:"myTest"}])
这里使用的方法db.revokeRolesFromUser()
;
官方链接:
db.revokeRolesFromUser()
在我使用robomongo
登录数据库test
,并没有显示出myTest
数据库。
如图:
一开始我以为是我命令敲错了,折腾了很久我才发现,是我对mongodb
的认证数据库概念不清楚导致的。
当在mongodb
中创建一个用户时,是要指定它属于哪个数据库(为了便于说明,我假定为A数据库
)而这个A数据库
就是该用户的认证数据库
,通俗点讲就是,该用户只能登陆A数据库
。虽然该用户只能登陆A数据库
,但是我们可以给该用户其他数据库(假定为B数据库
)权限。
这也同时说明两个规则:
①账号是跟着数据库走的。
②认证数据库并不会限制账号的权限。(即:也可以操作其他数据库)
现在我希望账号yutao
,即能登陆数据库test
,又可以登陆数据库myTest
。
根据规则①,我们只需要在myTest
数据库中创建一个和数据库test
一样的账号即可。
命令如下:
> db.createUser({
... user:"yutao",
... pwd:"yutao",
... roles:[{role:"readWrite", db:"myTest"}]
... })
Successfully added user: {"user" : "yutao","roles" : [{"role" : "readWrite","db" : "myTest"}]
}
注:账号yutao
,此时其实是两个。说白点就是在不同数据库中有两个一样的账号。
robomongo
还有就是在填写验证信息时,也说明账号只能登陆认证数据库。
所以普通用户只能看到一个数据库。
如果是root账号
或者admin账号
,可以看到全部的数据库
不过有区别,root
用户可以打开集合,而admin
用户不可以。
system.users
集合保存的就是创建的用户账号信息。
如图:
总结
由于mongodb
用户的账号是跟着数据库走的,所以也就明了了我之前的问题。
==-=-=-=-=-=-=-=2021年05月22日-=-=-=-=-=-=-=-=-=-=start-=-=-=-=-=
最新版的robo 3T
,已经可以显示只读数据库了;
比如:普通账号:yutao
的认证数据库是woos
,并且也对ssm
数据库拥有读权限,没有写权限;以前的版本中,是看不到ssm
的显示的;但是新版本中,如上面的图示,已经能看到了。
想到这里时,我突然有个疑问:
① 到底是mongodb取消了认证数据库的限制,还是因为robo 3T
的版本升级的缘故,所以能看到非认证数据库?
带着这样的疑问,我在window电脑上做实验(因为window电脑上,安装的mongodb是3.4.2)
账号说明:
{"_id" : "test.yutao","user" : "yutao","db" : "test","credentials" : {"SCRAM-SHA-1" : {"iterationCount" : 10000,"salt" : "qgewkOikdl4c/tXTAjd+4Q==","storedKey" : "0k7fgg42EFwmrrykGUsxotvL/x0=","serverKey" : "LvjDxD/rbSVgMUEixrbbbQF5BBg="}},"roles" : [ {"role" : "read","db" : "myTest"}, {"role" : "readWrite","db" : "test"}]
}
也就是说:yutao
账号的认证数据库是test
,并且对myTest
数据库有读的权限。
然后我再下载最新版的Robo 3T
,之后在连接:
上面的提示是指,如果想访问指定的数据库,可以在window -> Authentication tab
页面中指定。
可以看到,只能看到认证数据库test
;
现在我们根据提示来操作下:
实际上,认证数据库
test
可以不用指定,也会显示出来。
看到截图中粗体字:listDatabases;可以猜测, Robo 3T利用这道命令来达到显示效果;
再次,连接:
我们发现,已经可以显示出来了,所以这只是因为Robo 3T
版本升级带来的变化。
listDatabases
==-=-=-=-=-=-=-=2021年05月22日-=-=-=-=-=-=-=-=-=-=end-=-=-=-=-=
mongodb用户权限修改,删除以及robomongo显示问题相关推荐
- ubuntu修改新增用户的目录_Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法...
以下介绍在Ubuntu 18.04系统下创建新用户/目录.修改用户权限及删除用户的正确方法.在Ubuntu系统上创建新用户使用[sudo useradd 用户名]命令,但只能创建用户,不能在/home ...
- Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法
Ubuntu 18.04下创建新用户/目录.修改用户权限及删除用户的方法 以下介绍在Ubuntu 18.04系统下创建新用户/目录.修改用户权限及删除用户的正确方法.在Ubuntu系统上创建新用户使用 ...
- asp.net core根据用户权限控制页面元素的显示
asp.net core根据用户权限控制页面元素的显示 Intro 在 web 应用中我们经常需要根据用户的不同允许用户访问不同的资源,显示不同的内容,之前做了一个 AccessControlHelp ...
- mongodb用户权限管理配置
环境 mongodb 3.4 window7 MongoDB常用命令 <span style="color:#000000"><code class=" ...
- Ubuntu下开启MongoDB用户权限
本教程详细指导大家如何开启并设置用户权限.MongoDB默认是没有开启用户权限的,如果直接在公网服务器上如此搭建MongoDB,那么所有人都可以直接访问并修改数据库数据了. 其实MongoDB本身有非 ...
- MySQL:Linux下新建用户 权限授予 删除用户
1.创建账户,权限授予 1.1 MySQL 8.0之前版本 GRANT ALL PRIVILEGES on *.* to '用户名'@'主机' IDENTIFIED BY "密码" ...
- 解决mybatis的SELECT command denied to user 'root'@'192.168.1.47' for table 'user'的报错。mysql用户权限修改,表权限修改。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'root'@'joc ...
- 本地策略和组策略,更改安全设置和用户权限分配兼容性问题
如果您更改安全设置和用户权限分配,则可能会导致客户端.服务和程序问题发生 适用于: Microsoft Windows Server 2003 Standard Edition (32-bit x86 ...
- 1.2.1 linux用户权限
目录 su 切换用户账户 添加组: 删除组 修改用户所在组: 添加用户: 设置密码: 删除用户: 修改文件权限: 修改文件所有者: su 切换用户账户 格式: [su 用户名 ] [su] 切换到ro ...
最新文章
- mac rails mysql_MAC下Rails连接mysql出现 dyld: Symbol not found: _mysql_get_client_info 的解决办法...
- DeepMind最新发现!神经网络的性能竟然优于神经符号模型
- “科创30条”鼓励高校开设AI新兴学科
- 海外弱网下的在线视频平台优化实践​
- mvn 打包可执行包_用Maven打包发布可执行的jar包
- jquery每次动态加载dom,绑定事件会多一次,
- react如何卸载组件_reactjs – 如何删除/卸载嵌套的反应组件
- English trip M1 - PC9 Where am I Teacher:Jade
- pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】
- TCP、UDP、IP 协议分析(转)
- H3C 模拟器 pc与sw直连 登录web
- CyclicBarrier多线程
- Linux内核中Netfilter架构介绍
- 北斗导航 | RAIM算法之奇偶矢量法(原理讲解,附代码链接:可用性判定)
- Maven压缩插件YUI Compressor使用介绍
- 关于sentaurus使用感
- 【位操作笔记】计算以2为底整数N的对数 查表法
- 源地址转换、目的地址装换
- php网页 背景图片,HTML怎么设置网页背景图
- 电脑如何去除视频水印?
热门文章
- python pip什么意思_python中的pip是什么意思
- 钱钟书是怎样做读书笔记的 杨绛
- java经典题之冒泡排序
- JavaScript--------冒泡排序(含题目和答案)
- 【冒泡排序Java版】
- ios13全选手势_iOS13 (四)双指、三指手势
- 在编译humanoid_navigation相关软件包,出现 Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:解决方案
- nginx中配置二级域名和ssl
- js根据经纬度计算多边形面积
- 【安卓】给ViewFlipper加指示器,类似ViewPagerIndicator库提供的那种、!