windows版本 MongoDB副本集搭建及开启身份验证
大盗空空空空 人气:7MongoDB副本集搭建
我搭建的是一个主节点,两个副节点
-
构建目录结构如下图所示
-
rs0是副本集名称,每一份文件都是一个端口服务,以27018为主节点。
每一份的目录结构如下,conf存放的是配置文件信息,data27018是存放数据库数据信息,keyfile是存放key文件的。用于各个节点之间的身份验证。log存放数据库的日志信息,用来排查问题。
3.conf文件
Conf是放配置文件 # mongod.conf # for documentation of all options, see: # http:/https://img.qb5200.com/download-x/docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data. storage: dbPath: D:\MongoDB\rs0\27018\data27018 journal: enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: D:\MongoDB\rs0\27018\log27018\mongo.log # network interfaces net: port: 27018 bindIp: 0.0.0.0 #processManagement: security: authorization: enabled keyFile: D:\MongoDB\rs0\27018\keyfile\replicaSet1.key #operationProfiling: replication: oplogSizeMB: 2048 replSetName: rs0 #sharding: #clusterRole: shardsvr ## Enterprise-Only Options: #auditLog: #snmp:
4.Keyfile下有个.key的文件为了复制集的用户验证。(keyfile文件是需要base编码且差不多660个字符。权限)
可用Linux系统生成,或者找度娘。每一个端口服务下的key必须是同一个。
5.修改每一个实例的conf文件里的端口号及数据存放地址,日志等。
6.运行win+r 选择管理员启动cmd
Windows注册服务
Windows注册服务 mongod.exe --config "D:\MongoDB\rs0\27018\conf\mongo.conf" --serviceName "MongoDB27018" --serviceDisplayName "MongoDB27018" –install mongod.exe --config "D:\MongoDB\rs0\27019\conf\mongo.conf" --serviceName "MongoDB27019" --serviceDisplayName "MongoDB27019" –install mongod.exe --config "D:\MongoDB\rs0\27020\conf\mongo.conf" --serviceName "MongoDB27020" --serviceDisplayName "MongoDB27020" --install
安装成服务后可以到服务中查看。
7.注册完成后,将所有服务启动
8.重新打开cmd 连接到其中的一个mongodb实例命令为: mongo --host ip地址 --port 27018
9.再连接其他两个实例
10.进入27018节点进行初始化配置
输入命令
其中的localhost 应是本机的IP地址。(此处坑,如果是服务器上一定要设置为IP地址,否则会重头再来)
rscongfig={"_id":"rs0",members:[{_id:0,host:"localhost:27018"},{_id:1,host:"localhost:27019"},{_id:2,host:"localhost:27020"}]}
初始化该配置
rs.initiate(rscongfig)
回车如下图,“ok”:1,无错误信息。为正确
看下当前节点是否为主节点
rs.status()查看当前副本集状态
health:1 //1表明状态是正常,0表明异常 state:1 // 1表明是primary,2表明是slave,即做备份的机器
到此副本集就搭建成功了。接下来是开启身份验证
11.创建用户名
连接到27018,运行
use admin
定位到admin数据库,在这里创建用户信息
db.createUser( { user: "root", pwd: "root", roles: [ { role: "root", db: "admin" } ] } )
12.找到主库的配置文件 conf 开启身份验证,同时从库也要开,配置好位置。
conf 配置好后,将服务重新启动,然后客户端重新连接后 如果查看等报错的话就会提示需要权限,
然后转到use admin
db.auth("admin","admin")输入用户名密码
返回1就是 成功。
然后登陆从节点进行登陆看一下是否需要提示。
如果都成功,可以写入数据看一下复制集中是否有数据。
到此副本集身份验证开启说完了,下面说一下Springboot连接带安全认证的复制集
application-dev.properties spring.data.mongodb.uri=mongodb://admin:password@127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020/ecis?authSource=admin&authMechanism=SCRAM-SHA-1&replicaSet=rs0& connectTimeoutMS=30000
//解释
admin:password是用户名密码 @IP地址端口号 authSource=admin 用户名存在的数据库 authMechanism 不造啥意思 replicaSet 复制集名称 connectTimeoutMS=30000连接时间
下面是navicat连接复制集方式
添加主机名,端口号,点击发现,可以查询当前复制集中的端口服务。
终于写完了,第一次写,写的不好,请见谅。
加载全部内容