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/


posted @ 2020-04-08 20:32  wxzj  阅读(100)  评论(0编辑  收藏  举报