在 CentOS 8 上安装 MongoDB

总结如何在 CentOS 8 服务器上安装 和 配置 MongoDB 社区版本

MongoDB介绍

  MongoDB 是一个免费并且开源的文档数据库。它属于一个被称为 NoSQL 的数据库家族。NoSQL 与传统的关系型数据库不同,例如:MySQL 和 PostgreSQL。

  在 MongoDB 中,数据被灵活地以类似 JSON 的形式被存储成文档。它不要求预先定义schema,并且数据结构一直都可以改变。

安装 MongoDB

  MongoDB 在 CentOS 8 核心软件源上不可用。 我们将会启用 MongoDB 清华大学软件源,并且安装软件包。 使用当前连接查询mongodb最新版本[Install on Red Hat](https://link.juejin.cn/?target=https%3A%2F%2Fdocs.mongodb.com%2Fmanual%2Ftutorial%2Finstall-mongodb-on-red-hat%2F%23configure-the-package-management-system-yumhttps://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-m >以root 或者有 sudo 权限的用户身份执行下面的步骤

  在/etc/yum.repos.d/目录下创建一个名为mongodb-org.repo的源文件

1
2
3
4
5
6
7
vim /etc/yum.repos.d/mongodb-org.repo
# 内容如下
[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/
gpgcheck=0
enabled=1

  刷新缓存

1
sudo yum makecache

  安装mongodb-org软件

1
sudo dnf install mongodb-org -y

  在安装过程中,下面的软件包将会在你系统上安装 mongodb-org软件包介绍 - mongodb-org-server:mongod守护进程,相应的初始化脚本和配置 - mongodb-org-mongos:mongos守护进程 - mongodb-org-shell: mongo shell,一个适用于 MongoDB 的交互式JavaScript 界面 ,主要用来通过命令行执行一些管理任务。 - mongodb-org-tools : 包含一些 MongoDB 工具 ** 启用并且开机启动 MongoDB 服务**

1
sudo systemctl enable mongod --now

  验证安装 连接到MongoDB数据库

1
mongo

  运行下面的命令,显示 MongoDB版本号:

1
2
3
db.version()
# 输出
5.0.5

配置 MongoDB

  MongoDB配置文件在:/etc/mongod.conf。 这个文件是YAML格式。 > 默认的配置适用于大部分用户场景

  开启用户鉴权

1
2
3
4
vim /etc/mongod.conf
# 新增内容
security:  
  authorization: enabled

  这个authorization选项启用了Role-Based Access Control (RBAC),它规定了用户对数据和操作的访问规则。 如果这个选项被禁用,那么每个用户都可以访问任何数据,执行任何操作。 开启外网连接

1
2
3
4
5
6
vim /etc/mongod.conf
# 修改内容
net:  
   port: 27017  
   [[bindIp]]: 127.0.0.1  
   bindIp: 0.0.0.0

  对 MongoDB 配置文件进行修改之后,需要重启 mongod 服务:

1
sudo systemctl restart mongod

创建 MongoDB 管理员

  如果你启用了 MongoDB 用户鉴权,你需要创建一个管理员用户,可以访问并且管理 MongoDB 实例。 首先,访问 MongoDB shell:

1
mongo

  输入下面的命令,连接admin数据库:

1
use admin

  创建一个新用户,名称为mongoAdmin,赋予userAdminAnyDatabase角色:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
db.createUser(
  {
    user: "mongoAdmin",
    pwd: "changeMe",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

# 输出下面内容
Successfully added user: {
    "user" : "mongoAdmin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

  退出 Mongo shell:

1
quit()

  想要测试修改,使用你之前创建的管理员账号访问 mongo shell:

1
2
3
mongo -u mongoAdmin -p --authenticationDatabase admin
MongoDB shell version v5.0.5
Enter password:
1
use admin

  打印所有用户:

1
show users
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
    "_id" : "admin.mongoAdmin",
    "user" : "mongoAdmin",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ],
    "mechanisms" : [
        "SCRAM-SHA-1",
        "SCRAM-SHA-256"
    ]
}

mongodb设置后台运行

默认情况不需要进行这个步骤,这个步骤针对于手动编译的用户而言

  我们要在mongodb下面创建data目录和logs目录,用于存放data和logs。 设置好了之后,我们通常通过

1
mongod --dbpath /usr/local/mongodb/data

  让mongodb启动。 但是我们关闭shell,mongodb就停止运行了。如果想在后台运行,启动时只需添加 –fork函数即可。可以在日志路径后面添加–logappend,防止日志被删除。 代码如下:

1
mongod --fork --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb2.log --logappend

  这样,你关闭shell,在打开shell,照常可以允许mongo了! mongodb设置开机启动。 当我们把服务器关闭,重启之后,发现mongodb又停止了,有没有开机就启动的方法呢?我们把上面代码放到/etc/rc.local,中,就可以了。 具体操作步骤:

1
vim /etc/rc.local

  添加上面启动代码:

1
/usr/local/mongodb/bin/mongod --fork --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb2.log --logappend

  下次重启就可以直接运行mongodb了!