【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB
简介
MongoDB 是一款介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
包体说明
MongoDB官方源中包含以下几个依赖包:
- mongodb-org: MongoDB元数据包,安装时自动安装下面四个组件包:
- mongodb-org-server: 包含MongoDB守护进程和相关的配置和初始化脚本。
- mongodb-org-mongos: 包含mongos的守护进程。
- mongodb-org-shell: 包含mongo shell。
- mongodb-org-tools: 包含MongoDB的工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。
安装步骤
操作系统:CentOS Linux release 7.9,访问MongoDB官网,选择适合自己操作系统的版本进行下载,我们选择7.0.4的最新版本。
配置yum源
vim /etc/yum.repos.d/mongodb-org-7.0.repo
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
安装
我们看下yum库里有哪些版本
yum --showduplicates list mongodb-org | expand
Repository epel is listed more than once in the configuration
Installed Packages
mongodb-org.x86_64 7.0.4-1.el7 @mongodb-org-7.0
Available Packages
mongodb-org.x86_64 7.0.0-1.el7 mongodb-org-7.0
mongodb-org.x86_64 7.0.1-1.el7 mongodb-org-7.0
mongodb-org.x86_64 7.0.2-1.el7 mongodb-org-7.0
mongodb-org.x86_64 7.0.3-1.el7 mongodb-org-7.0
mongodb-org.x86_64 7.0.4-1.el7 mongodb-org-7.0
yum -y install mongodb-org
会安装7的最新的所有相关的包
操作
启动 mongodb :
systemctl start mongod.service
停止 mongodb :
systemctl stop mongod.service
重启 mongodb :
systemctl restart mongod.service
设置开机启动
systemctl enable mongod.service
查询 mongodb的状态:
systemctl status mongod.service
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-12-14 12:13:08 CST; 2h 29min ago
Docs: https://docs.mongodb.org/manual
Main PID: 21463 (mongod)
CGroup: /system.slice/mongod.service
└─21463 /usr/bin/mongod -f /etc/mongod.conf
Dec 14 12:13:08 VM-4-8-centos systemd[1]: Started MongoDB Database Server.
这里,我们第一次启动后关闭,然后又重启后,会遇到启动不成功:
Q1:
Dec 14 15:21:39 VM-4-8-centos systemd[1]: Started MongoDB Database Server.
Dec 14 15:21:39 VM-4-8-centos mongod[15099]: {"t":{"$date":"2023-12-14T07:21:39.087Z"},"s":"I", "c":"CONTROL", "id":7484500, "ctx":"main","msg":"Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, overriding ...fork\" to false"}
Hint: Some lines were ellipsized, use -l to show in full.
vim /usr/lib/systemd/system/mongod.service
把以下这行给注释了
#Environment="MONGODB_CONFIG_OVERRIDE_NOFORK=1"
保存后,执行
systemctl daemon-reload
然后重启,这个问题就解决了!
Q2:
Dec 14 11:21:10 VM-4-8-centos systemd[1]: mongod.service: main process exited, code=exited, status=14/n/a
这一一般是发生了执行权限的问题:
chown -R mongodb:mongodb /var/lib/mongodb // 这行看情况,我这里是默认就是mongodb 的权限的,所以不用执行
chown mongodb:mongodb /tmp/mongodb-27017.sock //这根据你开启的端口数字各有不同
service mongod restart
搞定!
查看版本
mongod --version
db version v7.0.4
Build Info: {
"version": "7.0.4",
"gitVersion": "38f3e37057a43d2e9f41a39142681a76062d582e",
"openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel70",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
说明安装OK,启动成功
终端连接
用终端工具连上去,输入
mongo
-bash: mongo: command not found
原来,从6起,mongo 指令已经无效,换成 mongosh
mongosh
Current Mongosh Log ID: 657aa6af3494a28e5eb77ec9
Connecting to: mongodb://<credentials>@10.0.4.8:28018/admin?directConnection=true&appName=mongosh+2.1.1
Using MongoDB: 7.0.4
Using Mongosh: 2.1.1
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
------
The server generated these startup warnings when booting
Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
vm.max_map_count is too low
------
Deprecation warnings:
- Using mongosh on the current operating system is deprecated, and support may be removed in a future release.
See https://www.mongodb.com/docs/mongodb-shell/install/#supported-operating-systems for documentation on supported platforms.
以上,我们要重点关注着三句话,
1.Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. (强烈建议使用带WiredTiger存储引擎的XFS文件系统)
报这个错是因为我的虚拟环境使用的是EXT4文件系统,官方不建议,但不影响使用,所以暂时不处理
在Linux上运行MongoDB时,官方建议使用Linux内核版本2.6.36或更高版本,使用XFS或EXT4文件系统。 如果可能,最好使用XFS,因为它通常与MongoDB表现更好。
使用WiredTiger存储引擎,强烈建议使用XFS,以避免在使用EXT4与WiredTiger时可能发生的性能问题。
使用MMAPv1存储引擎,MongoDB在使用它们之前预先分配其数据库文件,并经常创建大文件。 因此,官方建议使用XFS或EXT4文件系统。 如果可能,请使用XFS,因为它通常与MongoDB表现更好。
2.vm.max_map_count is too low
vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要大量内存映射的应用程序(MongoDB,Elasticsearch)或者特定的使用场景,可能需要增加该参数的值,以便支持更多的内存映射区域。
查看当前的max_map_count 值:
sysctl -a|grep vm.max_map_count
vm.max_map_count = 65530
修改该值:
vi /etc/sysctl.conf,在文件的末尾添加下面一行并保存
vm.max_map_count=262144
然后可以通过运行以下命令重新加载配置文件:
sysctl -p
2.Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
报这个错是因为MongoDB需要有一个安全库来开启数据库访问控制
在MongoDB部署上启用访问控制会强制执行身份验证,要求用户识别自己。当访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。
就是没开启认证的意思, 这很容易导致被黑客入侵。
安全设置
设置账户
进入 mongosh
创建一个超级用户,拥有所有数据库的所有权限:
db.createUser({user:"root",pwd:"K@************",roles: ['root']})
修改密码:
db.updateUser("root",{pwd:"K@************"});
//role 代表可以进行的操作,这里是读写,db是指针对哪个数据库,这里创建的这个用户对于testDB拥有读写权限创建用户
db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'testDB'}]})
//这是创建一个超级用户,拥有所有数据库的所有权限
db.createUser({user: 'root', pwd: '123456', roles: ['root']})
//更新用户
db.updateUser(用户名,{user:'test',pwd:'admin',roles:[{role:'read',db:'testDB'}]})
//删除用户
db.dropUser('test')
修改 MongoDB 配置文件:
打开 MongoDB 配置文件 /etc/mongod.conf,找到以下行:
security:
authorization: enabled
将 authorization 改为 enabled,表示启用 MongoDB 认证功能。
保存,重启mongoDB,生效。
修改端口和IP绑定
打开 MongoDB 配置文件 /etc/mongod.conf,找到以下行:
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.
修改成:
net:
port: 28018
bindIp: 0.0.0.0
保存,重启mongoDB,生效。
终端访问:
mongosh mongodb://10.0.4.8:28018/admin -u root -p ************
退出
quit
显示已有的数据库
show dbs
终端工具推荐用IDEA自带的Database 或者 DataGrip
总结
本文主要介绍了mongoDB的下载,安装部署,配置,和初级使用,下一篇我们将带来mongoDB的具体使用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!