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管道使用