spring mvc 添加 mongodb 4.x用户权限验证 (mongo 设置用户名密码)

spring mvc 添加 mongodb4.x用户权限验证(mongo 设置用户名密码)

  • 一、设置用户名密码的初衷
    • 一、使用MongoTemplate 配置用户验证
    • 二、配置mongodb数据库
      • 一、创建管理员权限
      • 二、修改配置文档mongod.cfg(位置:安装目录\bin 下)
      • 三、重启服务

一、设置用户名密码的初衷

在默认情况下,mongod是监听在0.0.0.0之上的,任何客户端都可以直接连接27017,且没有认证。这样做的好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。然而坏处也是显而易见,如果直接在公网服务器上如此搭建MongoDB,那么所有人都可以直接访问并修改数据库数据了。
默认情况下,mongod也是没有管理员账户的。因此除非你在admin数据库中使用db.addUser()命令添加了管理员帐号,且使用–auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令。包括delete和shutdown。
此外,mongod还会默认监听28017端口,同样是绑定所有ip。这是一个mongod自带的web监控界面。从中可以获取到数据库当前连接、log、状态、运行系统等信息。如果你开启了–rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。

一、使用MongoTemplate 配置用户验证

1.创建mongo.xml:

	
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:mongo="http://www.springframework.org/schema/data/mongo"
	   xsi:schemaLocation="http://www.springframework.org/schema/context
						   http://www.springframework.org/schema/context/spring-context-4.0.xsd
						   http://www.springframework.org/schema/data/mongo
						   http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
						   http://www.springframework.org/schema/beans
						   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

	
	
	
	<mongo:mongo id="mongo" replica-set="${mongo.hostPort}">
	
		
		<mongo:options
			connections-per-host="${mongo.connectionsPerHost}"
			threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
		    connect-timeout="${mongo.connectTimeout}"
			max-wait-time="${mongo.maxWaitTime}"
			auto-connect-retry="${mongo.autoConnectRetry}"
			socket-keep-alive="${mongo.socketKeepAlive}"
			socket-timeout="${mongo.socketTimeout}"
			slave-ok="${mongo.slaveOk}" write-number="1"
			write-timeout="0" write-fsync="true"/>
	mongo:mongo>

	
	<mongo:db-factory dbname="${mongo.dataName}" mongo-ref="mongo" />
		
	<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
		<constructor-arg name="username" value="${mongo.username}" />
		<constructor-arg name="password" value="${mongo.password}" />
	bean>
	
	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg ref="mongo" />
		<constructor-arg name="databaseName" value="${mongo.dataName}" />
		
		<constructor-arg ref="userCredentials" />
	bean>
beans>

2.创建mongo.properties:

mongo.hostPort=127.0.0.1:27017
mongo.username=dataUser #spring 需要操作的数据库用户名
mongo.password=cdb123456 #spring 需要操作的数据库用户密码
mongo.dataName=nrvsp  # spring 需要操作的数据库

#mongodb参数
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.socketTimeout=1500
mongo.slaveOk=true

二、配置mongodb数据库

一、创建管理员权限

1.打开cmd,输入mongo,进入mongodb的命令页面spring mvc 添加 mongodb 4.x用户权限验证 (mongo 设置用户名密码)_第1张图片

> use admin #进入admin数据库
switched to db admin
> db.createUser({user:"admin",pwd:"admin",roles:[{role:"root", db:"admin"}]}> Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

2.通过刚才创建的超级管理员账号登陆然后创建需要用spring 操作数据的的数据库账号
spring mvc 添加 mongodb 4.x用户权限验证 (mongo 设置用户名密码)_第2张图片

> use admin
switched to db admin
> db.auth("root","cdb123456")
1
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
nrvsp   0.011GB
> use nrvsp
switched to db nrvsp
> db.createUser( {user:"dataUser", pwd:"cdb123456",roles:[{role:"dbOwner",db:"nrvsp"}]})
Successfully added user: {
        "user" : "dataUser",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "nrvsp"
                }
        ]
}
>

注意:这里的子账号就是 mongodb 配置文件里面所需要填写的账号信息

二、修改配置文档mongod.cfg(位置:安装目录\bin 下)

首先,将bind_ip改为0.0.0.0(让其他电脑可以访问,用于远程连接,如果bind_ip127.0.0.1的话,就只能本地访问)

security:
  authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启

如图:
spring mvc 添加 mongodb 4.x用户权限验证 (mongo 设置用户名密码)_第3张图片

三、重启服务

重启MongoDB Server服务,启用认证!
现在就可以用Java 程序查询nrvsp 这个数据库了

参考文章:
https://blog.csdn.net/qq_26896281/article/details/81206492
https://blog.csdn.net/boybruce/article/details/45821829
中途踩坑参考 :
https://blog.csdn.net/wangmao01/article/details/80805643

你可能感兴趣的:(mongodb)