Linux 安装并配置最新的MongoDB

Connie ·
更新时间:2024-09-21
· 728 次阅读

Linux 安装并配置最新的MongoDB一、前言二、下载方式三、CentOS yum安装3.1 配置yum仓库源3.2安装四、配置3.1 mongod.conf 配置3.2 端口与ip3.3 安全认证3.4 *加入系统 service*3.5 配置防火墙3.6 配置 SELinux3.7 创建超级用户五、MongoDB 服务操作六、坑七、MongoDB社区版说明八、参考文档 一、前言

目前的稳定版本 是4.2.X,截止至20年4月初的最新是4.2.5,也推荐安装此版本,也可以尝鲜,安装4.3.Xunstable版本。目前最新的是4.3.5

本文主要讲解 CentOS 8 如何安装配置 MongoDB 4.2.5。

二、下载方式 官方下载 各 Linux 包管理安装 各系统对应的安装包安装 源码系统本地编译 三、CentOS yum安装 3.1 配置yum仓库源

配置mongodb-org-4.2版本的yum源

sudo 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 3.2安装

执行 yum 指令安装

sudo yum install mongodb-org

提示信息如下

MongoDB Repository 1.9 kB/s | 6.6 kB 00:03 Dependencies resolved. ======================================================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================================================== Installing: mongodb-org x86_64 4.2.5-1.el8 mongodb-org-4.2 10 k Installing dependencies: python2 x86_64 2.7.16-12.module_el8.1.0+219+cf9e6ac9 AppStream 109 k python2-libs x86_64 2.7.16-12.module_el8.1.0+219+cf9e6ac9 AppStream 6.0 M python2-pip-wheel noarch 9.0.3-14.module_el8.1.0+219+cf9e6ac9 AppStream 1.2 M python2-setuptools-wheel noarch 39.0.1-11.module_el8.1.0+219+cf9e6ac9 AppStream 289 k mongodb-org-mongos x86_64 4.2.5-1.el8 mongodb-org-4.2 15 M mongodb-org-server x86_64 4.2.5-1.el8 mongodb-org-4.2 25 M mongodb-org-shell x86_64 4.2.5-1.el8 mongodb-org-4.2 17 M mongodb-org-tools x86_64 4.2.5-1.el8 mongodb-org-4.2 62 M Installing weak dependencies: python2-pip noarch 9.0.3-14.module_el8.1.0+219+cf9e6ac9 AppStream 2.0 M python2-setuptools noarch 39.0.1-11.module_el8.1.0+219+cf9e6ac9 AppStream 643 k Enabling module streams: python27 2.7 Transaction Summary ======================================================================================================================================================================================================== Install 11 Packages Total download size: 129 M Installed size: 321 M

确认无误,按y安装

warning: /var/cache/dnf/mongodb-org-4.2-fddc3ec541fac48b/packages/mongodb-org-4.2.5-1.el8.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 058f8b6b: NOKEY MongoDB Repository 862 B/s | 1.7 kB 00:01 Importing GPG key 0x058F8B6B: Userid : "MongoDB 4.2 Release Signing Key " Fingerprint: E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B From : https://www.mongodb.org/static/pgp/server-4.2.asc Is this ok [y/N]: 四、配置

注意,以下带*的小节为非必需项,因为 yum 安装、安装包安装会自动配置。

3.1 mongod.conf 配置 vi /etc/mongod.conf 3.2 端口与ip

MongoDB 安装完默认只能通过本地mongo shell访问,绑定当前设备的IP,让其它设备能够访问MongoDB,其中port为MongoDB监听的端口号。

# network interfaces net: port: 27017 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. 3.3 安全认证

* 推荐在首次设置完超级管理员账号后开启

security: authorization: enabled 3.4 加入系统 service

注意:本小节不需要操作,yum 安装mongo-org时已经自动配置了。
创建 mongod 的 service 文件

sudo vi /usr/lib/systemd/system/mongod.service

添加以下内容

[Unit] Description=MongoDB Database Server Documentation=https://docs.mongodb.org/manual After=network.target [Service] User=mongod Group=mongod Environment="OPTIONS=-f /etc/mongod.conf" EnvironmentFile=-/etc/sysconfig/mongod ExecStart=/usr/bin/mongod $OPTIONS ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb PermissionsStartOnly=true PIDFile=/var/run/mongodb/mongod.pid Type=forking # file size LimitFSIZE=infinity # cpu time LimitCPU=infinity # virtual memory size LimitAS=infinity # open files LimitNOFILE=64000 # processes/threads LimitNPROC=64000 # locked memory LimitMEMLOCK=infinity # total threads (user+kernel) TasksMax=infinity TasksAccounting=false # Recommended limits for for mongod as specified in # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install] WantedBy=multi-user.target

创建系统服务软链接

ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/

重新加载系统服务

systemctl daemon-reload 3.5 配置防火墙 sudo firewall-cmd --add-port 27017/tcp --permanent sudo firewall-cmd --reload sudo firewall-cmd --list-ports 3.6 配置 SELinux

目前的SELinux策略不允许MongoDB进程访问 /sys/fs/cgroup,这是确定系统上可用内存所必需的。 如果打算以enforcing模式运行SELinux,则需要对SELinux策略进行调整。

有两种方式,第一种是关闭SELinux,也是最简单的方式。第二种是配置 SELinux 的安全策略。
(1)关闭 SELinux
临时关闭,重启失效

setenforce 0

永久关闭
打开 SELinux 配置文件

sudo vi /etc/selinux/config

修改 SELINUX 的值

SELINUX=disabled

重启生效,若不重启,配合方法一临时关闭。
(2)配置 SELinux 策略

确保你的系统安装了checkpolicy软件,可以简单通过yum 下载安装:

sudo yum install checkpolicy

创建一个mongo策略的文件 mongodb_cgroup_memory.te

cat > mongodb_cgroup_memory.te <<EOF module mongodb_cgroup_memory 1.0; require { type cgroup_t; type mongod_t; class dir search; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir search; allow mongod_t cgroup_t:file { getattr open read }; EOF

创建好后,可以通过以下三个就可以编译并加载自定义的策略模块:

checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod sudo semodule -i mongodb_cgroup_memory.pp Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details. 3.7 创建超级用户

mongo shell中,在admin数据库中添加一个具有userAdminAnyDatabase角色,以及readWriteAnyDatabase角​​色。

技巧
从mongo shell的4.2版本开始,可以使用方法passwordPrompt(),与各种用户身份验证/管理方法/命令等结合使用,以提示输入密码,而不是直接在方法/命令调用中明文指定密码。 但是,仍然可以像使用早期版本的mongo shell一样直接指定密码。(不安全)

use admin db.createUser( { user: "jeremy", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )

在提示输入密码时,输入自己的管理员密码即可。然后结束mongod。

db.adminCommand( { shutdown: 1 } )

重启mongod

systemctl restart mongod 五、MongoDB 服务操作

启动服务

systemctl start mongod

关闭服务

systemctl stop mongod

重启服务

systemctl restart mongod

查看服务状态

systemctl status mongod 六、坑

启动服务失败,通过查看服务状态,得到退出状态码2,配置问题。

● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Fri 2020-04-03 11:06:18 CST; 10min ago Docs: https://docs.mongodb.org/manual Process: 16855 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=2) Process: 16853 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 16851 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 16849 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

查看配置文件

# network interfaces net: port: 27017 bindIp: 0.0.0.0,::

觉得没问题,查看官方文档说明

net: port: bindIp: maxIncomingConnections: wireObjectCheck: ipv6:

bindIp的传参是String,于是我加了‘’,OK。

# network interfaces net: port: 27017 bindIp: ’0.0.0.0,::‘ 七、MongoDB社区版说明
包名 说明
mongodb-org 一个元软件包,它将自动安装下面列出的四个组件软件包。
mongodb-org-server 包含mongod守护程序,关联的init脚本和配置文件(/etc/mongod.conf)。 您可以使用初始化脚本从配置文件启动mongod。 有关详细信息,请参阅运行MongoDB社区版。
mongodb-org-mongos 包含mongos守护程序。
mongodb-org-shell 包含mongo shell。
mongodb-org-tools 包含以下MongoDB工具: mongoimport bsondump, mongodump, mongoexport, mongofiles, mongorestore, mongostat, and mongotop.
八、参考文档

mongoDB 官方docs.


作者:JeremyTsai



Linux linux 安装 安装 MongoDB

需要 登录 后方可回复, 如果你还没有账号请 注册新账号