环境
MongoDB 4.x
步骤
- 下载、安装
地址:https://www.mongodb.com/download-center/community 截至目前,最新版本为4.0.5
解压下载的安装包(zip),建立如下目录环境(非必须,可根据实际情况自行调整)
在replicaset目录下建立如下三个配置文件,分别用来表示主机、次主机的配置。
文件内容如下:(需要修改的地方有N处,尤其注意端口号和路径,搜#@标记)
#系统日志配置
systemLog:
destination: file
#@
path: log/mongodb/mongod_primary.log
logAppend: true
#quiet模式运行,建议设置为false,方便排查错误
quiet: false
#进程管理
processManagement:
#进程后台运行
#fork: false
#进程pid文件#@
pidFilePath: log/mongodb/mongod_primary.pid
#网络配置
net:
#监听端口#@
port: 27018
#监听网卡 多个使用英文逗号隔开
bindIp: 127.0.0.1
#最大并发连接数 默认65535
maxIncomingConnections: 65535
#验证客户端传过来的数据,文档嵌套多时,对性能会有些影响
wireObjectCheck: true
#是否启用ipv6,默认不启用
ipv6: true
#unixDomainSocket:
#是否启用socket监听 默认true
#enabled: true
#socket保存目录,默认/tmp
#pathPrefix: log/mongodb
#socket文件权限,默认0700
#filePermissions: 0700
#http:
#是否启用http服务,默认false,安全考虑线上环境要关闭
#enabled: false
#是否启用http jsonp,默认false,即使http.enabled为false,只要此项为true,一样可以访问,安全考虑线上环境要关闭
#JSONPEnabled: false
#是否启用rest api接口,默认false,安全考虑线上环境要关闭
#RESTInterfaceEnabled: false
compression:
#是否启用数据压缩
compressors: snappy
#安全配置
security:
#type:string
#密钥路径,副本集和分片集群节点间授权时使用的密钥
keyFile: log/mongodb/.replSetTest0Key
#type:string
#集群授权模式,默认keyFile,值列表:keyFile,sendKeyFile,sendX509,x509
clusterAuthMode: keyFile
#type:string
#是否开启数据库访问RBAC权限控制,默认:disabled,仅对mongod命令有效
authorization: enabled
#type:boolean
#是否开启服端js执行,默认true,如果未开启$where,group,mapreduce都不能使用
javascriptEnabled: true
#存储配置
storage:
#type:string
#数据库数据存储目录,默认/data/db #@
dbPath: data/mongodb/primary
#type:boolean
#启动时是否尝试重建索引,默认true
#indexBuildRetry: false
#journal日志
journal:
#type:boolean
#Enable or disable the durability journal to ensure data files remain valid and recoverable.
enabled: true
#type:int
#日志同步间隔,Values can range from 1 to 500 milliseconds.
commitIntervalMs: 100
#type:boolean
#是否开启一数据库一目录,默认是false
directoryPerDB: false
#type:int
#数据落地时间间隔,默认为60秒,不能设置为0,一般使用默认值即可
syncPeriodSecs: 60
#type:string
##存储引擎,默认wiredTiger,可选值 mmapv1,wiredTiger,inMemory
engine: wiredTiger
wiredTiger:
engineConfig:
#type:float
#单个实例可用的数据缓存内存大小,version >= 3.4默认:50% of RAM minus 1 GB, or 256 MB.
cacheSizeGB: 0.25
#type:string
#WiredTiger journal数据压缩格式,默认snappy,可用的压缩类型: none, snappy, zlib
journalCompressor: snappy
#type:boolean
#索引文件分目录存储,默认false,version >= 3.0后版本可用
directoryForIndexes: false
collectionConfig:
#type:string
#块数据压缩格式,默认snappy,可用的压缩类型:none, snappy, zlib
blockCompressor: snappy
indexConfig:
#type:boolean
#是否开启索引prefix compression,默认true
prefixCompression: true #是否开启索引prefix compression,默认true
#operationProfiling操作性能分析
operationProfiling:
#type:int
#慢查询时间单位毫秒,默认100,如果开启了profile,日志会保存到system.profile集合中
slowOpThresholdMs: 100
#type:string
#性能分析模式,开启会影响性能,谨慎操作。默认off.
#可选值1:off: Off. No profiling.
#可选值2: slowOp:On. Only includes slow operations.
#可选值3: all:On. Includes all operations.
mode: slowOp
#replication复制配置
replication:
#type:int
#数字类型(单位M) replication op log 大小,64位系统默认为可用磁盘的5%
oplogSizeMB: 512
#type:string
#所属replica set集群名称
replSetName: replSetTest0
#setParameter配置
setParameter:
enableLocalhostAuthBypass: false
生成fileKey:
openssl rand -base64 745 > log/mongodb/.replSetTest0Key
- 关闭认证,配置集群
先把三个config文件中的security节注释掉,依次启动三个MongoDB实例,以无认证的方式启动。
在主机上(我的是27018):
rs.initiate(
{
_id: "replSetTest0",
version: 1,
members: [
{ _id: 0, host : "127.0.0.1:27018" },
{ _id: 1, host : "127.0.0.1:27019" },
{ _id: 2, host : "127.0.0.1:27020" }
]
}
)
在次机上(我的是27019、27020):
rs.slaveOk()
- 新建管理员用户(不必需,用户名、密码记得改改,后面的角色和数据库保持不变)
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root", db:"admin"}]})
- 开启认证,部署业务环境
退出刚才启动三个实例,取消刚才的刚才注释的security节,重新启动3个instance
此时,如果不认证的话,应该是无法使用诸如rs.status()
、db.createCollecion()
这样的方法的,会提示鉴权错误。
使用:
use admin
db.auth(“admin”, “admin”)
输出1则为认证成功
之后rs.status()试一下:
部署业务环境:
之后就不用多说了,创建一个col,再给他个用户,db.createUser({ user: "rc", pwd: "rc", roles: [{ role: "dbOwner", db: "rc" }] })
,之后退出cli,用新用户登录即可。
暂时先记录这么点。后续再追加。
配置文件参考自http://www.cnblogs.com/wadeyu/p/7930608.html