系统: 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
配置步骤以下:html
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 注:二、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 注:二、3自行修改(端口依次修改成:2701七、2701八、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 副本集增长密码认证。java
副本集设置身份验证与单机不一样,须要增长一个 keyFile 以便副本集成员相互认证。linux
这个文件须要知足下面几点要求:spring
咱们能够在 Linux 上直接使用 openssl 建立一个这样的文件,而后上传至其余副本集成员服务器:mongodb
openssl rand -base64 512 > mongodb.key chmod 400 mongodb.key
auth=true keyFile = keyFile=/usr/local/mongodb-replset/mongodb-1/mongodb.key // keyFile 能够使用绝对路径也能够使用相对路径
进入客户端(注意必定要是主服务器,只有主服务器有权限 执行更新操做)数据库
./mongodb-1/bin/mongo
建立一个全局管理员,用于管理用户:vim
use admin db.createUser({ user: "root", pwd: "husky", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
建立一个数据库拥有者用户,方便建立索引centos
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
<?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>
spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database
生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)<br/> 为 mongodb 副本集增长密码认证springboot