Centos7 使用Yum源安装MongoDB4.2 补:单机副本集搭建以支持事务

Centos7 使用Yum源安装MongoDB4.2版本数据库

前置:修改yum安装源对mongodb的支持

可查看官方文档:

本文也是参照官方文档搭建的

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum

正式操作

(1)修改yum安装mongoDB的repo源文件

vi /etc/yum.repos.d/mongodb-org-4.2.repo

在文件中添加如下信息

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

(2)安装并启动mongo

yum install mongodb-org -y

此操作需要一定时间 ,当执行完毕后

使用如下命令进入客户端

mongo

禁用mongo自动升级,修改/etc/yum.conf文件

vim /etc/yum.conf
#在文件中加入下方配置
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
保存退出

exmple :操作mongo的命令如下 (开,关,从启 ,查看状态)

启动:systemctl start mongod
重启:systemctl restart mongod
关闭:systemctl stop mongod
查看运行状态:systemctl status mongod

执行 systemctl start mongod 命令启动Mongo

(3)查看mongo是否开启

systemctl status mongod

#出现如下信息则说明mongo已开启
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-01-17 19:37:33 CST; 5s ago
     Docs: https://docs.mongodb.org/manual
  Process: 18740 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 18738 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 18734 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 18733 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 18743 (mongod)
   CGroup: /system.slice/mongod.service
           └─18743 /usr/bin/mongod -f /etc/mongod.conf

查看mongo日志

more /var/log/mongodb/mongod.log

(4)启动可能遇到的问题

启动后出现或日志中出现 错误代码 code=14 则说明之前服务器上安装过Mongo 但是数据并没有完全清除

解决命令: (清除之前文件并从启)

cd /tmp
rm -rf mongodb-27017.sock
systemctl restart mongod

(5)开启mongo库远程访问权限

首先关闭mongo库 (之前启动时未修改配置文件)

systemctl stop mongod

进入mongo配置文件

cd /etc/
ll
vim mongod.conf

如没有vim命令可用以下命令进行安装

sudo yum install -y vim

修改文件如下位置 (将127.0.0.1改为0.0.0.0)

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

保存后退出

(6)防火墙设置

cenos7 最好使用firewall

如未安装则用以下命令进行安装

yum install firewalld firewalld-config

查看防火墙是否开启

 firewall-cmd --state

如没有开启且确定不需要开启则略过下面

查看开启的防火墙端口列表

firewall-cmd --permanent --list-port

如没有27017端口则将其开启

firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --zone=public --add-port=27017/udp --permanent

重启防火墙

firewall-cmd --reload

如果是云服务器则需要在在安全组配置中加入27017端口配置

(7)从新启动mongo并连接

systemctl start mongod

查看是否开启

systemctl status mongod
netstat -untlp

使用navicat12 或者studio3T 连接测试

至此 无密码版Mongodb数据库搭建完毕

------------------------------------------------------Mongodb 配置密码----------------------------------------------------------------------

(8)补:mongodb配置密码(超级用户,普通用户)

(1)进入mongo库
[root@alibyleilei /]# mongo
#或者
[root@alibyleilei /]# mongo --port 27017
(2)创建超级用户(可查看所有数据库信息)

进入mongo后切换到自带的admin数据库

use admin

创建超级用户语句

db.createUser(
  {
    user: "root",
    pwd: "123456",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

ctrl+c退出mongodb

(3)启用身份验证

​ 修改Mongodb的配置文件 使用yum源其位置在/etc/mongod.conf

修改配置

vim /etc/mongod.conf

#放开下方的security:
#修改配置如下
security:
  authorization: enabled

保存文件从新启动mongo

:wq
systemctl restart mongod

使用密码链接测试

mongo --port 27017 -u "root" --authenticationDatabase "admin" -p

#输入密码后出现数据库消息则成功 或者使用studio3t进行连接测试
(4)创建普通用户(只能操作查看对应的一个库信息)

exmple:我在数据库中有一个cx_sc数据库

创建cx_sc对应的普通用户 leilei: (此用户链接成功后仅可查看以及操作cx_sc数据库)

use cx_sc
db.createUser({user: "leilei", pwd: "123456", roles: [{role: "readWrite", db: "cx_sc" }]})

使用studio3t 进行链接测试

链接成功

(5)修改Mongo超级用户密码
#首先将需要修改用户密码的用户登录到admin 数据库
mongo --port 27017 -u "root" --authenticationDatabase "admin" -p
#输入密码进行验证,成功后进入到admin中
#使用如下命令进行修改密码  (用户,需要修改的密码)
db.changeUserPassword('root','123456');

附上卸载步骤

首先停止服务

systemctl stop mongod

删除所有相关依赖包

yum erase $(rpm -qa | grep mongodb-org)

再删除所有日志以及数据

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

注释掉之前的禁止mongo升级文件 (否则从新下载命令会出错)
vim /etc/yum.conf

#将下方代码进行注释
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

(9)Mongodb 在springBoot中的使用

Springboot项目yml配置

spring:
  data:
    mongodb:
      uri: mongodb://cx_sc库用户:cx_sc库用户密码@47.97.118.22:27017/cx_sc
      	# 上方为明确指定某个数据的用户进行连接
      	# 也可以使用admin 数据库中的用户进行连接  统一到admin 数据库进行认证
      	# admin 用户认证 url 写法: mongodb://账户:密码%40@ip:端口/数据库名?authSource=admin&authMechanism=SCRAM-SHA-1

SpringBoot整合MongoDB
SpringBoot整合MongoDB(一)
SpringBoot整合MongoDB(二)多数据源配置,Aggregation管道使用

补:单副本集搭建

先查看 未使用副本集 studio 3T 连接信息
在这里插入图片描述
这里在这里做一个说明 由于个人目前学习水平有限 并受到服务器数量限制 这里仅仅做了一个MongoDB4.2单机转只有一个实例的副本集以支持事务 的事情 ,这种场景满足于 项目中 可不使用Mongodb集群 但需要mongodb 事务的场景

(1)先注释掉 认证信息 然后从新启动mongodb

vim /etc/mongod.conf

#security:
#  authorization: enabled

systemctl restart mongod

(2)添加新的配置信息
replication:
  oplogSizeMB: 102400
  replSetName: searay7 #searay7 是你要搭建副本集的名字

sharding:
  clusterRole: shardsvr
(3)进入mongo客户端

由于吧认证信息注释掉了 所以只需要输入mongo命令即可

mongo

会出现类似如下 错误 ,这个其实就是设置了副本集配置 但并未搭建的提示错误
在这里插入图片描述
因此,我们开始搭建副本集。
需要先进入 mongo 的admin 数据库

use admin

在这里插入图片描述
初始化副本集,运行rs.initiate命令 就算是有多个副本集节点 也只能选择一台机器执行此命令
这里说明下: _id:“searay7” 内容为配置文件中 配置的副本集名 hosts是 节点端口IP

> cfg={_id:"searay7",members:[ {_id:0,host:"192.168.10.176:27017"}] }
> rs.initiate(cfg)

在这里插入图片描述
出现以下字样表示副本集设置完成
在这里插入图片描述
也会出现 副本集名字 命令提示符
查看副本集配置

>rs.conf()

在这里插入图片描述

查看副本集状态

> rs.status()

可以看档 当前 此节点为主节点 (主节点 可读可写 从节点仅可读)
在这里插入图片描述
在这里插入图片描述
此时我们再使用 show dbs 命令 便可查看数据库信息了
在这里插入图片描述
使用studio 3t 进行连接测试 发现信息变成了 replica
在这里插入图片描述
最后一步 还原咱们的连接密码 即放开咱们 mongod.conf 中 刚刚注释的security信息即可 连接测试查看
在这里插入图片描述
到此 Mongodb4.2单机转只有一个实例的副本集以支持事务 就完成了!!!
事务测试 我放在了 SpringBoot整合MongoDB(二)多数据源配置,Aggregation管道使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章