最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装、客户端操作、安全认证、副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很大。特此记录,以备查看。

文章目录:

MongoDB和Java(1):Linux下的MongoDB安装

MongoDB和Java(2):普通用户启动mongod进程

MongoDB和Java(3):Java操作MongoB

MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群

MongoDB和Java(7):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用户管理的更多相关文章

  1. 【mongoDB运维篇①】用户管理

    3.0版本以前 在mongodb3.0版本以前中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据库.即 use admin , 相当于进入超级用户管理模式,mongo ...

  2. MongoDB和Java(2):普通用户启动mongod进程

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  3. mongodb的用户管理及安全认证

    1.确认mongodb的版本 > use admin switched to db admin > db.runCommand({}) { "version" : &q ...

  4. MongoDB的用户管理(6)

    注意: A)在mongodb中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据. 即 use admin , -->相当于进入超级用户管理模式. B)mongo ...

  5. MongoDB基础之七 用户管理

    MongoDB的用户管理 注意:A)在mongodb中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据.即 use admin , -->相当于进入超级用户管理 ...

  6. mongodb用户管理和服务安装

    一.忘记密码快速找回 任何系统忘记密码都是一样的操作:以无需授权的模式开启程序,然后进入系统修改权限设置,退出来重新以授权方式开启程序.MySQL是这样,MongoDB也是这样.好的系统都提供了无授权 ...

  7. 浅析MongoDB用户管理

    浅析MongoDB用户管理 http://www.jb51.net/article/53830.htm mongodb3.03开启认证 http://21jhf.iteye.com/blog/2216 ...

  8. MongoDB快速入门学习笔记7 MongoDB的用户管理操作

    1.修改启动MongoDB时要求用户验证加参数 --auth 即可.现在我们把MongoDB服务删除,再重新添加服务 mongod --dbpath "D:\work\MongoDB\dat ...

  9. MongoDB 学习笔记(六):备份与用户管理

    一.启动项 1.在启动数据库服务时可以在命令行输入mongod命令,然后直接带一些参数,比如“mongod --dbpath D:\Installations\MongoDB-2.4.6\MongoD ...

随机推荐

  1. jemalloc内存分配原理【转】

    原文:http://www.cnblogs.com/gaoxing/p/4253833.html 内存分配是面向虚拟内存的而言的,以页为单位进行管理的,页的大小一般为4kb,当在堆里创建一个对象时(小 ...

  2. 转录因子 | transcription factor | 从入门到精通

    研究可以做得很浅,查查genecard数据库,从数据库里找找motif,用工具跑跑target gene,构建一下基因调控网络GRN. 研究也可以做得很深,了解一个物种里面有哪些transcripti ...

  3. zookeeper核心原理全面解析

    下述各zookeeper机制的java客户端实践参考zookeeper java客户端之curator详解. 官方文档http://zookeeper.apache.org/doc/current/z ...

  4. JAVA | Java对象的内存分配过程是如何保证线程安全的?

    JAVA | Java对象的内存分配过程是如何保证线程安全的? 专注于Java领域优质技术,欢迎关注 作者 l Hollis 来源 l Hollis(ID:hollischuang) JVM内存结构, ...

  5. supervisor配置进程

    具体配置见此页面:https://www.jianshu.com/p/ac6c84a2f415 设置开机启动:https://blog.csdn.net/xyang81/article/details ...

  6. Spring使用多个 <context:property-placeholder/>

    Spring中报"Could not resolve placeholder"的解决方案(引入多个properties文件) 解决方案: (1) 在Spring 3.0中,可以写: ...

  7. java面试题实战三

    华为优招面试经验. 1.笔试(这部分按照华为以前的风格不会为难人的,认真做AC一道题就可以进面试了,我编程能力一般吧,做了一道半而已,-_-||!) 2.测评(性格测试,不要太偏激就行了) 3.面试分 ...

  8. Windows 10提示你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问

    Windows 10提示你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问 1.首先按window+R键打开运行.如下图 2.在运行中输入“gpedit.msc”来启动本地组策略编 ...

  9. SQLServer常用运维SQL整理(转)

    转载地址:https://www.cnblogs.com/tianqing/p/11152799.html 今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最 ...

  10. mysql查看连接情况

    1.使用navicat进入命令行或者命令行进入mysql 2.看所有进程 show full processlist; 3.看所有连接show status like 'Threads%';