文章目錄
在CentOS7中安裝和刪除MongoDB 4.2
參考文檔
- https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
- https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7
- https://www.linode.com/docs/databases/mongodb/install-mongodb-on-centos-7/#install-mongodb
- https://docs.mongodb.com/manual/reference/mongo-shell/
安裝MongoDB
推薦採用Yum在線安裝方式,在沒有Yum源時也可以採用Rpm離線安裝方式。
Yum在線安裝
在CentOS7中安裝MongoDB 4.2 Community Edition。
添加MongoDB Yum repo:
創建/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
讓MongoDB Yum repo生效:
sudo yum clean all
sudo yum makecache
檢查MongoDB包版本:
sudo yum list mongodb-org
安裝MongoDB:
sudo yum install -y mongodb-org
或安裝指定版本的MongoDB,比如MongoDB 4.2.5:
sudo yum install -y mongodb-org-4.2.5 mongodb-org-server-4.2.5 mongodb-org-shell-4.2.5 mongodb-org-mongos-4.2.5 mongodb-org-tools-4.2.5
以服務方式啓動MongoDB:
sudo systemctl enable mongod
sudo systemctl start mongod
檢查MongoDB服務:
sudo systemctl status mongod
如果啓動報錯,請參考下面的Troubleshooting。
連接MongoDB驗證是否安裝成功:
mongo
help
Rpm離線安裝
下載CentOS7 x86_64的MongoDB 4.2的rpm,比如MongoDB 4.2.5:
https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/
安裝MongoDB:
sudo yum isntall -y mongodb-*.rpm
配置MongoDB
默認安裝好後的MongoDB是一個“裸奔”狀態,需要進行一些必要的安全配置才能使用。
MongoDB目錄和配置文件
# 配置文件
# 常見配置:系統日誌、數據存儲、IP和端口、安全
/etc/mongod.conf
# 日誌
/var/log/mongodb/mongod.log
# 數據
/var/log/mongodb/
Increase User Limits
echo "mongod soft nofiles 64000" >> /etc/security/limits.conf
echo "mongod hard nofiles 64000" >> /etc/security/limits.conf
echo "mongod soft nproc 64000" >> /etc/security/limits.conf
echo "mongod hard nproc 64000" >> /etc/security/limits.conf
修改ulimit配置後,需要重啓MongoDB才能生效:
sudo systemctl restart mongod
參考:
https://docs.mongodb.com/manual/reference/ulimit/
安全配置
開啓MongoDB驗證,修改/etc/mongod.conf
,添加:
security:
authorization: enabled
修改配置後,需要重啓MongoDB才能生效:
sudo systemctl restart mongod
爲安全起見,自MongoDB 3.6起,MongoDB默認只允許本機訪問:
net:
port: 27017
bindIp: 127.0.0.1
警告:強烈不建議將bindIp設爲0.0.0.0會導致任何IP都可以訪問該MongoDB的安全風險。
參考:
- https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
- MongoDB安全
- 如何保證MongoDB的安全性?
創建數據庫和用戶
創建管理員賬號:
# 默認數據庫爲test
db
# 切換到admin數據庫
use admin
# 創建管理員賬號
db.createUser({user: "mongo-admin", pwd: "test@123", roles:[{role: "userAdminAnyDatabase", db: "admin"}]})
# 退出MongoDB Shell
exit
創建數據庫和用戶:
# 用上面創建的管理員賬號登錄
mongo -u mongo-admin --authenticationDatabase admin
# 創建並切換到該數據庫(如果不存在),比如創建一個blog數據庫來保存博客的文章、作者和評論等文檔
use blog
# 在blog數據庫上創建一個用戶名爲blogapp的用戶,讓該用戶有讀寫數據的權限
db.createUser({user: "blogapp", pwd: "blog@123", roles:[{role:"readWrite", db: "blog"}]})
# 退出MongoDB Shell
exit
使用新創建的用戶登錄:
# 使用blogapp用戶登錄
mongo -u blogapp --authenticationDatabase blog
參考:
Troubleshooting
參考
啓動MongoDB失敗,錯誤代碼62
錯誤代碼62的官方說明:Returned by
mongod
if the datafiles in--dbpath
are incompatible with the version ofmongod
currently running.
如果原來安裝了舊的版本的MongoDB,在安裝新版本MongoDB後,數據文件不兼容,會導致該錯誤。
如果只是測試環境,可以參考下面的刪除MongoDB將MongoDB程序和數據都刪除掉,再重新安裝MongoDB。
如果是生產環境,則需要先upgrade data。
參考:
https://stackoverflow.com/questions/47850004/mongodb-shutting-down-with-code62
刪除MongoDB
查看已安裝的MongoDB:
sudo yum list installed | grep mongodb
停止MongoDB:
sudo systemctl stop mongod
刪除MongoDB:
sudo yum erase $(rpm -qa | grep mongodb-org)
刪除數據目錄:
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
參考:
https://stackoverflow.com/questions/8766579/uninstalling-mongo