MongoDB和Java(7):MongoDB用户管理
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装、客户端操作、安全认证、副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很大。特此记录,以备查看。
文章目录:
MongoDB和Java(1):Linux下的MongoDB安装
MongoDB和Java(2):普通用户启动mongod进程
MongoDB和Java(4):Spring Data整合MongoDB(XML配置)
MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群
本文记录如何开启MongoDB认证、添加用户
1、MongoDB权限管理简单说明
MongoDB中的每个数据库有一些用户(得创建),这些用户有的只能操作自己所属库的表,有的可以操作其他库的表,这取决于它拥有的角色。
一个用户可以有多个角色,角色包含若干权限,权限又拥有资源、操作。
简单来说就是 用户 — 角色 — 权限 的权限管理体系。
关于角色、权限、资源等官网有文档:
https://docs.mongodb.com/manual/reference/built-in-roles/
https://docs.mongodb.com/manual/reference/resource-document/
https://docs.mongodb.com/manual/reference/privilege-actions/
权限资源就不做详细介绍了,因为创建用户使用内置角色就足够了,不太可能去自己去创建角色
看一下内置角色
Database User Roles
read、readWrite
Database Administration Roles
dbAdmin、dbOwner、userAdmin,其中dbOwner权限最高
Cluster Administration Roles
clusterAdmin、clusterManager、clusterMonitor、hostManager
Backup and Restoration Roles
backup、restore
All-Database Roles
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
Superuser Roles
root
2、创建超级管理员
[root@xugf-test4 ~]# mongo
> use admin
switched to db admin
> db.createUser({
... user: "admin",
... pwd: "",
... roles: [{role: "root", db: "admin"}],
... mechanisms: ["SCRAM-SHA-1"]
... })
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
修改mongo.conf配置文件,开启权限认证功能,auth属性设置true
[mongo@xugf-test4 ~]$ cat /etc/mongo.conf
dbpath=/data/mongo/db/
logpath=/data/mongo/log/mongodb.log
bind_ip_all=true
fork=true
auth=true
重启mongodb
3、身份认证的两种方式
再使用mongo连接,进行操作时会提示未认证
[root@xugf-test4 ~]# mongo
> show dbs
--12T10::00.683+ E QUERY [js] Error: listDatabases failed:{
"ok" : ,
"errmsg" : "command listDatabases requires authentication",
"code" : ,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js::
Mongo.prototype.getDBs@src/mongo/shell/mongo.js::
shellHelper.show@src/mongo/shell/utils.js::
shellHelper@src/mongo/shell/utils.js::
@(shellhelp2)::
此时,有两种方式进行客户端认证:
1)在连接时使用--authenticationDatabase选项指定认证数据库,使用-u选项指定用户名,使用-p指定密码
[root@xugf-test4 ~]# mongo -u admin -p --authenticationDatabase admin
MongoDB shell version v4.0.2
Enter password:
MongoDB server version: 4.0.
> show dbs
admin .000GB
config .000GB
local .000GB
2)在连接后切换到认证数据库后,使用db.auth("username", "password")进行认证
[root@xugf-test4 ~]# mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.
> use admin
switched to db admin
> db.auth("admin", "") > show dbs
admin .000GB
config .000GB
local .000GB
4、添加数据库管理员
给test库添加一个数据库管理员testAdmin
> use test
switched to db test
> db.createUser({
... user: "testAdmin",
... pwd: "",
... roles: [{role: "dbOwner", db: "test"}],
... mechanisms: ["SCRAM-SHA-1"]
... })
Successfully added user: {
"user" : "testAdmin",
"roles" : [
{
"role" : "dbOwner",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
使用testAdmin连接
[root@xugf-test4 ~]# mongo -u testAdmin -p --authenticationDatabase test
> db
test
> db.getUsers()
[
{
"_id" : "test.testAdmin",
"user" : "testAdmin",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
]
5、添加数据库读写用户
给test库添加一个xugf用户
> use test
switched to db test
> db.createUser({
... user: "xugf",
... pwd: "",
... roles: [{role: "readWrite", db: "test"}],
... mechanisms: ["SCRAM-SHA-1"]
... })
Successfully added user: {
"user" : "xugf",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
使用xugf连接
[root@xugf-test4 ~]# mongo -u xugf -p --authenticationDatabase test
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.
>
> db
test
MongoDB和Java(7):MongoDB用户管理的更多相关文章
- 【mongoDB运维篇①】用户管理
3.0版本以前 在mongodb3.0版本以前中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据库.即 use admin , 相当于进入超级用户管理模式,mongo ...
- MongoDB和Java(2):普通用户启动mongod进程
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- mongodb的用户管理及安全认证
1.确认mongodb的版本 > use admin switched to db admin > db.runCommand({}) { "version" : &q ...
- MongoDB的用户管理(6)
注意: A)在mongodb中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据. 即 use admin , -->相当于进入超级用户管理模式. B)mongo ...
- MongoDB基础之七 用户管理
MongoDB的用户管理 注意:A)在mongodb中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据.即 use admin , -->相当于进入超级用户管理 ...
- mongodb用户管理和服务安装
一.忘记密码快速找回 任何系统忘记密码都是一样的操作:以无需授权的模式开启程序,然后进入系统修改权限设置,退出来重新以授权方式开启程序.MySQL是这样,MongoDB也是这样.好的系统都提供了无授权 ...
- 浅析MongoDB用户管理
浅析MongoDB用户管理 http://www.jb51.net/article/53830.htm mongodb3.03开启认证 http://21jhf.iteye.com/blog/2216 ...
- MongoDB快速入门学习笔记7 MongoDB的用户管理操作
1.修改启动MongoDB时要求用户验证加参数 --auth 即可.现在我们把MongoDB服务删除,再重新添加服务 mongod --dbpath "D:\work\MongoDB\dat ...
- MongoDB 学习笔记(六):备份与用户管理
一.启动项 1.在启动数据库服务时可以在命令行输入mongod命令,然后直接带一些参数,比如“mongod --dbpath D:\Installations\MongoDB-2.4.6\MongoD ...
随机推荐
- MySQL之replace函数应用
replace函数,从字面上看其主要作用就是替换.实际它的作用确实是替换.那么替换有哪些应用场景呢?比如A表和B表有一个关联的字段就是id,但是在A中id是数字,在B中id也是数字,但是B中id多一个 ...
- [技术博客]JSCover+selenium获得js代码覆盖率
本文档讲解了我们是如何使用JSCover来获得Selenium的测试样例的js代码文件的执行覆盖率的. 事实上网上有挺多博客讲这玩意儿了,不过完全按照网上已有的教程去弄的的话,并无法满足我们的需要. ...
- DELPHI开始支持LINUX DOCKER
DELPHI开始支持LINUX DOCKER 本方翻译自Marco Cantu的文章. 在过去的几年中,将服务器端解决方案(实际上是任何类型的应用程序)部署到轻量级容器而不是物理机器或虚拟机已经变得越 ...
- 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据
在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持 Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...
- Spring注解驱动第三讲--@Filter介绍
上一讲主要针对@ComponentScan注解做了一些说明,本文主要对@Filter的扫描条件,再做一些详细的介绍 1,FilterType.ANNOTATION 按照注解的方式进行扫描.后面clas ...
- 大数据 Hibernate
大数据 Hibernate - 国内版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=%E5%A4%A7%E6%95%B0% ...
- Mockito 的用法
本文为博主原创,转载请注明出处: Mockito 是一个基于MIT协议的开源java测试框架. Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为.对于moc ...
- 全新思维导图 XMind ZEN v10.0.0 中文破解版
http://www.carrotchou.blog/20331.html 官网 https://www.xmind.cn/ 注意事项 破解版本已经去除了全部的官方试用版的限制,让大家可以像正版用户一 ...
- matlab学习笔记13_3创建函数句柄
一起来学matlab-matlab学习笔记13函数 13_3 创建函数句柄 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help ...
- Bootstrap Table 初始化设置
$('#ArbetTable').bootstrapTable({ url: '/Interface/GetData', //请求后台的URL(*) method: 'get', //请求方式(*) ...