环境
系统: centos7
软件: mongodb-linux-x86_64-rhel70-4.0.2.tgz
下载解压
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.2.tgz -C /usr/local/mongodb
cd /usr/local/mongodb
基本配置:
- 假定已经解压安装完成,现在所处的目录是 /usr/local
- mongodb 目录:/usr/local/
配置步骤如下:
1)新建副本集文件夹:
mkdir mongodb-replset
2)复制解压好的mongodb文件到mongodb-replset下:
cp mongodb -r mongodb-replset/mongodb-1
cp mongodb -r mongodb-replset/mongodb-2
cp mongodb -r mongodb-replset/mongodb-3
3)创建data logs conf 目录(用于存数据、日志、配置文件)
cd mongodb-replset/mongodb-1
mkdir data logs conf
注:2、3自行创建
4)修改配置文件 conf/mongo.conf
vim mongodb-1/conf/mongodb.conf
配置文件如下:
port=27017
#数据文件存放目录
dbpath=/usr/local/mongodb-replset/mongodb-1/data/
#日志文件存放目录
logpath=/usr/local/mongodb-replset/mongodb-1/logs/mongodb.log
pidfilepath=/usr/local/mongodb-replset/mongodb-1/mongo.pid
#以守护程序的方式启用,即在后台运行
fork=true
#使用追加的方式写日志
logappend=true
#最大同时连接数
maxConns=500
#开放ip 允许外网访问
bind_ip=0.0.0.0
# 设置开启权限认证
noauth=true
# 副本名称(配置副本集,这个参数是必须的)
replSet=myreplset
oplogSize=2048
注:2、3自行修改(端口依次修改为:27017、27018、27019,数据、日志、pid自行更换)
5)启动
./mongodb-1/bin/mongod --config mongodb-1/conf/mongodb.conf
./mongodb-2/bin/mongod --config mongodb-2/conf/mongodb.conf
./mongodb-3/bin/mongod --config mongodb-3/conf/mongodb.conf
6) 进入mongo 客户端(在这里我们进入 1 的)
./mongodb-1/bin/mongo
config配置:
config={
"_id" : "myreplset",
"members" : [
{
"_id" : 0,
"host" : "192.168.22.11:27017"
},
{
"_id" : 1,
"host" : "192.168.22.11:27018"
},
{
"_id" : 2,
"host" : "192.168.22.11:27019"
}
]
}
初始化:
rs.initiate(config);
初始化成功显示如下:
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
查看状态:
rs.status();这个来查看副本集各节点的状态;
注:到此,基本的一主二副的 副本集就搭建好了
mongodb 副本集增加密码认证
说明:默认情况下,MongoDB 不会进行身份验证,也没有账号,只要能连接上服务就可以对数据库进行各种操作,出于安全角度考虑,我们应当为其添加认证访问。本文将指导最基本的为 mongodb 副本集增加密码认证。
创建 KeyFile
副本集设置身份验证与单机不同,需要增加一个 keyFile 以便副本集成员相互认证。
这个文件需要满足下面几点要求:
- 文本长度需要在 6 和 1024 之间
- 认证时候不考虑文件中空白字符
- 连接到副本集的成员和 mongos 进程的 keyfile 文件内容必须一样
- 必须是base64编码,但是不能有等号
- 文件权限必须是x00,也就是说,不能分配任何权限给group成员和other成员
我们可以在 Linux 上直接使用 openssl 创建一个这样的文件,然后上传至其他副本集成员服务器:
openssl rand -base64 512 > mongodb.key
chmod 400 mongodb.key
变更配置文件(以1为例)
auth=true
keyFile = keyFile=/usr/local/mongodb-replset/mongodb-1/mongodb.key
// keyFile 可以使用绝对路径也可以使用相对路径
创建用户
进入客户端(注意一定要是主服务器,只有主服务器有权限 执行更新操作)
./mongodb-1/bin/mongo
创建一个全局管理员,用于管理用户:
use admin
db.createUser({ user: "root", pwd: "husky", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
创建一个数据库拥有者用户,方便创建索引
use test
db.createUser({ user: "admin", pwd: "husky", roles: [{ role: "dbOwner", db: "test" }] })
创建一个读写用户,方便通过java等操作数据库
use test
db.createUser({ user: "test", pwd: "husky", roles: [{ role: "readWrite", db: "test" }] }
测试密码认证
./mongodb-1/bin/mongo
use test
db.auth("test","husky");
1
java 连接配置
spring XML 配置
<?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:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- credentials="用户名:密码@用户归属数据库" -->
<mongo:mongo-client replica-set="172.17.0.3:27018,172.17.0.4:27018, 172.17.0.5:27018" credentials="mytest:mytest@mytest" id="mongo">
<mongo:client-options
connections-per-host="20"
threads-allowed-to-block-for-connection-multiplier="10"
connect-timeout="120000"
max-wait-time="120000"
socket-keep-alive="true"
socket-timeout="150000"
/>
</mongo:mongo-client>
<mongo:db-factory dbname="数据库名" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
</beans>
springboot配置
spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database
参见
生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)<br/> 为 mongodb 副本集增加密码认证
来源:oschina
链接:https://my.oschina.net/u/3801804/blog/2248249