Mongodb安装
mongodb 单机安装流程
(1)先到官网下载压缩包文件 mongodb-linux-x86_64-rhel70-4.2.3.tgz.
(2)上传压缩包到Liunx中,解压到当前目录
tar -xzvf mongodb-linux-x86_64-rhel70-4.2.3.tgz
(3)移动解压后的文件夹到指定的目录中:
mv mongodb-linux-x86_64-rhel70-4.2.3 /home/mongodb
(4)新建几个目录,分别用来存储数据和日志
mkdir -p /home/mongodb/single/data/db
mkdir -p /home/mongodb/single/log
(5)新建并修改配置文件
vim /home/mongodb/single/mongod.conf
配置文件的内容如下:
systemLog:
#MongoDB 发送所有的日志输出的目标指定为文件
## The path of the log file to which mongod or mongos should send all diagnostic loggin information
destination: file
#mongod或mongos就向其发送所有诊断日志记录信息的日志文件的路径
path: /home/mongodb/single/log/monod.log
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
logAppend: true
storage:
#mongod实例存储其数据的目录;storage.dbPath设置仅适用于mongod.
## The directory where the mongod instance stores its data.Default value is "/data/db".
dbPath: "/home/mongodb/single/data/db"
journal:
#启动或禁用持久性日志以确保数据文件保持有效各可恢复
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式.
fork: true
net:
#服务实例绑定的IP,默认是locahost
#bindIP
bindIp: 192.168.1.6
#绑定的端口,默认是27017
port: 27017
(6)启动MongoDB服务
[root@server160 soft]# /home/mongodb/mongodb-4.2.3/bin/mongod -f /home/mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 1332
child process started successfully, parent exiting
(7)通过进程来查看服务是否启动了:
[root@server160 soft]# ps -ef|grep mongod
root 1332 1 0 01:10 ? 00:00:00 /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
root 1366 1184 0 01:12 pts/0 00:00:00 grep --color=auto mongod
(7)分别使用mongo命令和compass 工具来连接测试
提示:如果远程连接不上,需要配置防火墙放行,或直接关闭liunx防火墙.
#查看防火墙状态
systemctl status firewalld
#临时关闭防火墙
systemctl stop firewalld
#开机禁止启动防火墙
systemctl disable firewalld
(8)停止关闭服务
停止服务的方式有两种,快速关闭和标准关闭,下面依次说明
(一)快速关闭方法(快速,简单,数据可能会出错)
目录:通过系统的kill 命令,直接杀掉进程:
杀完要检查一下,避免有的没有杀掉
kill -2 11232(pid)
[补充]
如果一旦是因为数据损坏,则需要进行如下操作(了解):
1)删除lock文件:
rm -f /mongodb/single/data/db.*.lock
2)修改数据
/usr/local/mongdb/bin/mongod --repair --dbpath=/mongodb/single/data/db
(二)标准的关闭方法(数据不容易出错,但麻烦)
目标:通过mongo客户端中的.shutdownServer 命令来关闭服务
主要的操作步骤参考如下:
#客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行.
mongo --port 27017
#切换到admin库
use admin
#关闭服务
db.shutdownServer()
mongodb 副本集架构创建
一主一副本一仲裁
Primary :192.168.1.6:27017
Secondary: 192.168.1.7:27017
Arbiter :192.168.1.8:27017
(1)建立存放数据和日志的目录
# -------------myrs
#主节点
mkdir -p /mongodb/replica_sets/myrs/log
mkdir -p /mongodb/replica_sets/myrs/data/db
(2)新建或修改配置文件
vim /mongodb/replica_sets/myrs/mongod.conf
192.168.1.6: mongod.conf 内容如下:
systemLog:
#MongoDB 发送所有的日志输出的目标指定为文件
## The path of the log file to which mongod or mongos should send all diagnostic loggin information
destination: file
#mongod或mongos就向其发送所有诊断日志记录信息的日志文件的路径
path: /home/mongodb/replica_sets/myrs/monod.log
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
logAppend: true
storage:
#mongod实例存储其数据的目录;storage.dbPath设置仅适用于mongod.
## The directory where the mongod instance stores its data.Default value is "/data/db".
dbPath: "/home/mongodb/replica_sets/myrs/data/db"
journal:
#启动或禁用持久性日志以确保数据文件保持有效各可恢复
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式.
fork: true
net:
#服务实例绑定的IP,默认是locahost
#bindIP
bindIp: localhost,192.168.1.6
#绑定的端口,默认是27017
port: 27017
replication:
#副本集的名称
replSetName: myrs
192.168.1.7: mongod.conf 内容如下:
systemLog:
#MongoDB 发送所有的日志输出的目标指定为文件
## The path of the log file to which mongod or mongos should send all diagnostic loggin information
destination: file
#mongod或mongos就向其发送所有诊断日志记录信息的日志文件的路径
path: /home/mongodb/replica_sets/myrs/monod.log
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
logAppend: true
storage:
#mongod实例存储其数据的目录;storage.dbPath设置仅适用于mongod.
## The directory where the mongod instance stores its data.Default value is "/data/db".
dbPath: "/home/mongodb/replica_sets/myrs/data/db"
journal:
#启动或禁用持久性日志以确保数据文件保持有效各可恢复
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式.
fork: true
net:
#服务实例绑定的IP,默认是locahost
#bindIP
bindIp: localhost,192.168.1.7
#绑定的端口,默认是27017
port: 27017
replication:
#副本集的名称
replSetName: myrs
162: mongod.conf 内容如下:
systemLog:
#MongoDB 发送所有的日志输出的目标指定为文件
## The path of the log file to which mongod or mongos should send all diagnostic loggin information
destination: file
#mongod或mongos就向其发送所有诊断日志记录信息的日志文件的路径
path: /home/mongodb/replica_sets/myrs/monod.log
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
logAppend: true
storage:
#mongod实例存储其数据的目录;storage.dbPath设置仅适用于mongod.
## The directory where the mongod instance stores its data.Default value is "/data/db".
dbPath: "/home/mongodb/replica_sets/myrs/data/db"
journal:
#启动或禁用持久性日志以确保数据文件保持有效各可恢复
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式.
fork: true
net:
#服务实例绑定的IP,默认是locahost
#bindIP
bindIp: 192.168.1.8
#绑定的端口,默认是27017
port: 27017
replication:
#副本集的名称
replSetName: myrs
(3)创建其它两个节点
#配置1.6环境
#拷贝mongo解压文件
scp -r /usr/local/mongodb/ root@192.168.1.6:/usr/local
#拷贝目录和配置文件
scp -r /mongodb/ root@192.168.1.7:/
#登录 161 更改配置文件中的IP地址
vim /mongodb/replica_sets/myrs/mongod.conf
#临时关闭防火墙
systemctl stop firewalld
#开机禁止启动防火墙
systemctl disable firewalld
#配置162环境
#拷贝mongo解压文件
scp -r /usr/local/mongodb/ root@192.168.1.8:/usr/local
#拷贝目录和配置文件
scp -r /mongodb/ root@192.168.1.8:/
#登录 162 更改配置文件中的IP地址
vim /mongodb/replica_sets/myrs/mongod.conf
#临时关闭防火墙
systemctl stop firewalld
#开机禁止启动防火墙
systemctl disable firewalld
(4)启动节点服务 (分别启动三台机构上的mongod 服务)
[root@server160 /]# /home/mongodb/mongodb-4.2.3/bin/mongod -f /home/mongodb/replica_sets/myrs/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 1457
child process started successfully, parent exiting
(5)初始化配置副本集和主节点
使用客户端命令连接 192.168.1.6 的27017节点
/home/mongodb/mongodb-4.2.3/bin/mongo
结果,连接上之后,很多命令无法使用,比如show dbs 等,必须初始化副本集才行,准备初始化新副本集
语法:
> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "192.168.1.6:27017",
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1582616656, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1582616656, 1)
}
myrs:SECONDARY>
myrs:PRIMARY>
#查看配置信息
myrs:PRIMARY> rs.conf()
#查看集群状态
myrs:PRIMARY> rs.status()
#添加副本节点,出现OK 1,代表添加成功
myrs:PRIMARY> rs.add("192.168.1.7:27017")
#添加仲裁节点
myrs:PRIMARY> rs.addArb("192.168.1.8:27017")
(6)登录副本节点 192.168.1.6
#登录
/home/mongodb/mongodb-4.2.3/bin/mongo
#设置为奴隶节点,允许在从成员上运行读的操作
#语法
rs.slaveOk()
#或
rs.slaveOk(true)
(6)登录仲裁节点 192.168.1.7
#登录
/home/mongodb/mongodb-4.2.3/bin/mongo
#设置为奴隶节点,允许在从成员上运行读的操作
#语法
rs.slaveOk()
#或
rs.slaveOk(true)
mongodb 数据库权限配置
内建角色:
数据库用户角色: read、readWrite;
数据库管理角色: dbAdmin、dbOwner、userAdmin;
集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色: backup、restore;
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色: root; 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色: __system;
角色说明:
Read: 允许用户读取指定数据库
readWrite: 允许用户读写指定数据库
dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin: 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner: 允许在当前DB中执行任意操作
readAnyDatabase: 赋予用户所有数据库的读权限,只在admin数据库中可用
readWriteAnyDatabase: 赋予用户所有数据库的读写权限,只在admin数据库中可用
userAdminAnyDatabase: 赋予用户所有数据库管理User的权限,只在admin数据库中可用
dbAdminAnyDatabase: 赋予管理所有数据库的权限,只在admin数据库中可用
root: 超级账号,超级权限,只在admin数据库中可用。
集群管理角色:
clusterAdmin: 赋予管理集群的最高权限,只在admin数据库中可用
clusterManager: 赋予管理和监控集群的权限
clusterMonitor: 赋予监控集群的权限,对监控工具具有readonly的权限
hostManager: 赋予管理Server
单机操作
(1)创建用户信息
#启动单机服务
/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
#登录单机服务
/usr/local/mongodb/bin/mongo
#切换到admin库
use admin
#创建用户 db.createUser({user:"myroot",pwd:"123456",roles:[{"role":"root","db":"admin"}]})
db.createUser({user:"myroot",pwd:"123456",roles:["root"]})
#创建一个普通管理员权限用户
db.createUser({user:"myadmin",pwd:"123456",roles:[{"role":"dbAdminAnyDatabase","db":"admin"}]})
#查看已经创建用户的情况
db.system.users.find()
#删除用户
db.dropUser("myadmin")
#更改用户密码
db.changeUserPassword("myroot","123456")
#验证用户
db.auth("myroot","2133");
#创建普通用户
use sportdb
db.createUser({user:"accellence",pwd:"123456",roles:[{"role":"readWrite","db":"sportdb"}]})
(2)服务器开启安装认证服务
有两种方式开启权限认证启动服务:一种是参数方式,一咱是配置文件方式
1)参数方式
在启动时指定参数 -- auth,如
/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf -- auth
2),配置文件方式
在mongod.conf配置文件加入:
vim /mongodb/single/mongod.conf
security:
#开启极权认证
authorization: enabled
测试认证是否已经开启
#启动单机服务
/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
#登录单机服务
/usr/local/mongodb/bin/mongo
#查看dbs
show dbs
#登录
db.auth("myroot","123456")
副本集安全认证操作
(1)分别启动副本集节点:
#分别启动 6,7,8 mongo服务
/home/mongodb/mongodb-4.2.3/bin/mongod -f /home/mongodb/replica_sets/myrs/mongod.conf
#登录主节点
/home/mongodb/mongodb-4.2.3/bin/mongo
#切换到admin库
use admin
#创建用户
db.createUser({user:"myroot",pwd:"123456",roles:[{"role":"root","db":"admin"}]})
db.createUser({user:"myroot",pwd:"123456",roles:["root"]})
(2)第一步:生成一个key 文件到当前文件夹目录
可能使用任何方法生成密码文件.例如:以下操作使用openssl生成密码文件,然后使用chmod来更改文件权限,仅为文件所有者提供读取权限
#生成加密文件
openssl rand -base64 64 -out /home/mongodb/replica_sets/myrs/mongo.keyfile
#修改文件权限
chmod 400 /home/mongodb/replica_sets/myrs/mongo.keyfile
#拷贝文件到其它服务器
scp /home/mongodb/replica_sets/myrs/mongo.keyfile root@192.168.1.7:/home/mongodb/replica_sets/myrs/
scp /home/mongodb/replica_sets/myrs/mongo.keyfile root@192.168.1.8:/home/mongodb/replica_sets/myrs/