准备环境
安装包地址:
1.准备3台可以互相ping同的虚拟机
2.win10系统
mongoDB官网地址: https://www.mongodb.com/
最新下载地址: https://www.mongodb.com/download-center/community
1.1安装数据库
1.1.1双击windows installer工具包
选择complete
默认安装在C:\Program Files\MongoDB\Server\4.2
一直点击next到安装完成
1.1.2 初始化数据库(每台虚拟机一样)
1.删除自动生成的data 和 log 下的 所有文件,只留个空文件夹
2.bin同级目录下创建文件mongo.cfg,请注意打开文件扩展名
内容如下:
#database path
dbpath=C:\Program Files\MongoDB\Server\4.2\data
#log path
logpath=C:\Program Files\MongoDB\Server\4.2\log\mongo.log
#error log append
logappend=true
replSet=rs0
#enable logfile
journal=true
#filter some useless info,if need debug,please set false
quiet=true
#bind ip
bind_ip=0.0.0.0
#port default 27017
port=17017
1.1.3 bin目下启动windows mongoDB服务,依次执行
1.sc delete MongoDB(若下载的是解压包,可跳过此步骤)
2.mongod --config “C:\Program Files\MongoDB\Server\4.2\mongo.cfg” --install --serviceName “mongoDB”
3.net start mongodb
注意:如果出现
或者配置文件执行命令不生效的
可以先删除mongoDB服务,然后重新执行以上命令,如下所示,代表启动成功, net stop mongoDB代表停止服务
如果出现net start mongoDB 后 服务名无效的,请以管理员方式运行CMD
成功后可通过http请求,出现可出现如下页面:
http://127.0.0.1:17017/
注意:外部访问虚拟机服务需要将ip置:0.0.0.0 并且关闭防火墙
2.1 集群搭建
2.1.1进入172.21.15.15虚拟机下
在mongoDB的bin目录下执行命令mongo --host 127.0.0.1:17017 进入mongoDB的命令行模式
执行命令(注意:此处_id:"rs0"要和配置文件中replSet=rs0中名称相同)
config={_id:“rs0”, members:[{_id:0, host:“172.21.15.15:17017”,priority:2},{_id:1, host:“172.21.15.17:17017”,priority:1},{_id:2,host:“172.21.15.18:17017”,arbiterOnly:true}]}
2.1.2 初始化副本集群
rs.initiate(config)
2.1.3查看复制集状态
rs.status()
至此,mongoDB集群已经搭建完毕
注意:
rs.initiate(config)出现报错
是由于配置文件中缺少replSet=rs0导致,现在已经加上
2.2 开启身份验证
2.2.1 副本集搭建成功后,给副本集创建账户,密码
在主节点创建用户权限为userAdminAnyDatabase,务必保证每个节点都正常运行,因为创建身份需要及时通道到所有节点,若有节点异常,会一直等待同步
db.createUser({user:“admin”,pwd:“q123456.”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})
创建后用验证角色 :db.auth(‘admin’,‘q123456.’)
可以用db.getUsers()查看所有的角色
2.2.1 关闭副本集:停掉mongoDB集群所有的节点
1.net stop mongoDB 或者 在连接节点状态下在admin 数据库下db.shutdownServer()
2.修改每个节点的配置文件mongo.conf
#database path
dbpath=C:\Program Files\MongoDB\Server\4.2\data
#log path
logpath=C:\Program Files\MongoDB\Server\4.2\log\mongo.log
#是否以安全认证方式进行
auth=true
#keyFile鉴权文件:改为实际路径
keyFile=C:\Program Files\MongoDB\Server\4.2\key\keyfile.keyfile
#error log append
logappend=true
replSet=rs0
#enable logfile
journal=true
#filter some useless info,if need debug,please set false
quiet=true
#bind ip
bind_ip=0.0.0.0
#port default 27017
port=17017
3.keyfile.keyfile中的内容是base64编码,字符要大于666,copy到每个mongoDB下,用于节点之前的相互通讯
可以网站直接翻译获得 https://base64.us/
4.重新启动所有的节点
5.db.auth(‘admin’,‘q123456.’) 验证登陆,创建其他数据库用户
6.在所用数据库在创建用户
use testdb
创建用户
db.createUser({user:“dbOwnerTestdb”,pwd:“q123456.”,roles:[{role:“dbOwner”,db:“testdb”}]})