简述:项目采用spring-maven 集成mongodb
- pom.xml中引入对应maven包依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.0-rc0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-cross-store</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-log4j</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
- ApplicationContext.xml 加入mongodb的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.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/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/classes/dbconfig.properties</value>
<value>/WEB-INF/classes/mongo.properties</value>
</list>
</property>
</bean>
<!-- mongodb -->
<!-- 获取配置资源 -->
<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.user}" />
<constructor-arg name="password" value="${mongo.pwd}" />
</bean>
<mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}">
<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="chatRecord" mongo-ref="mongo"/>
<!-- mongodb的模板 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg name="databaseName" value="chatRecord" />
<constructor-arg ref="userCredentials" />
</bean>
</beans>
3.mongo.properties配置文件
mongo.host=xxx.xxx.xxx.xxx
mongo.port=27017
mongo.user=zhangsan
mongo.pwd=123456
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.socketTimeout=1500
mongo.slaveOk=true
mongo.writeNumber=1
mongo.riteTimeout=0
mongo.writeFsync=true
-
linux centos7 安装mongodb 官网下载 mongodb-linux-x86_64-rhel70-3.6.3.tgz,上传到服务器/usr/local文件夹下
-
tar -zxvf mongodb-linux-x86_64-rhel70-3.6.3.tgz 解压到当前文件夹下 修改文件夹名称为mongodb3.6.3,进入到当前文件夹下 cd mongodb3.6.3
-
mkdir logs / mkdir data 创建文件文件夹 和日志文件夹
-
新建mongodb.conf 文件,内容如下放置到bin 文件夹下
# data-path
dbpath=/usr/local/mongodb3.6.3/data/
# log-path
logpath=/usr/local/mongodb3.6.3/logs/mongodb.log
# port
port=27017
# work-type:
fork=true
#bind-ip
bind_ip=0.0.0.0
#auth
#auth=true
- 启动mongodb命令 :./mongod --config mongodb.conf
- 关闭命令:连接mongodb后 use admin 之后输入db.shutdownServer() 或者 kill -9 进程号 强制关闭
- 默认是用户验证是关闭的,当auth=true开启后,需要增加用户账号密码
- 设置用户账号密码 设置root用户 连接mongodb后 use admin
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限
db.createUser({user:"root",pwd:"123456",roles:[{"role":"root","db":"admin"}]})
为其他库建立用户
use otherDB
db.createUser({user:"zhangsan",pwd:"123456",roles:[{"role":"readWrite","db":"otherDB"}]})
- 设置好发现,连接工具可以连接上,但是程序连接不上报错
org.springframework.data.mongodb.CannotGetMongoDbConnectionException: Failed to authenticate to database [otherDB], username = [zhangsan], password = [1****6]
解决方法在网上看到一个帖子:mongodb3.03以上开启认证,解决程序认证连接报错以及第三方客户端无法认证问题
- 常用命令
.查看加密方式
db.system.version.findOne({"_id" : "authSchema"})
5:SCRAM-SHA-1
3:MONGODB-CR
删除用户
db.dropUser("myuser")