【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB

2023-12-14 19:16:33

简介

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的具体使用。

文章来源:https://blog.csdn.net/jiangguilong2000/article/details/134994304
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。