Install MongoDB Community Edition on Red Hat or CentOS

On this page本页内容

MongoDB Atlas

MongoDB Atlas is a hosted MongoDB service option in the cloud which requires no installation overhead and offers a free tier to get started.MongoDB提供了一个免费安装服务的选项。

Overview概述

Use this tutorial to install MongoDB 4.4 Community Edition on Red Hat Enterprise Linux, CentOS Linux, or Oracle Linux [1] using the yum package manager.使用本教程可以使用yum软件包管理器在Red Hat Enterprise Linux、CentOS Linux或Oracle Linux[1]上安装MongoDB 4.4社区版。

MongoDB Version

This tutorial installs MongoDB 4.4 Community Edition.本教程安装MongoDB 4.4社区版。To install a different version of MongoDB Community, use the version drop-down menu in the upper-left corner of this page to select the documentation for that version.要安装不同版本的MongoDB社区,请使用此页面左上角的版本下拉菜单选择该版本的文档。

Considerations注意事项

Platform Support平台支持

MongoDB 4.4 Community Edition supports the following 64-bit versions of Red Hat Enterprise Linux (RHEL), CentOS Linux, and Oracle Linux [1] on x86_64 architecture:MongoDB 4.4 社区版支持以下64位版本的Red Hat Enterprise Linux(RHEL)、CentOS Linux和Oracle Linux[1],这些版本基于x86_64体系结构:

  • RHEL / CentOS / Oracle 8
  • RHEL / CentOS / Oracle 7
  • RHEL / CentOS / Oracle 6

MongoDB only supports the 64-bit versions of these platforms.MongoDB只支持这些平台的64位版本。

MongoDB 4.4 Community Edition on RHEL / CentOS / Oracle also supports the s390x architecture on select platforms.RHEL/CentOS/Oracle上的MongoDB 4.4社区版也支持部分平台上的s390x体系结构。

See Supported Platforms for more information.有关更多信息,请参阅支持的平台

[1](1, 2) MongoDB only supports Oracle Linux running the Red Hat Compatible Kernel (RHCK).MongoDB只支持运行Red Hat兼容内核(RHCK)的Oracle Linux。MongoDB does not support the Unbreakable Enterprise Kernel (UEK).MongoDB不支持牢不可破的企业内核(UEK)。

Windows Subsystem for Linux (WSL) - Unsupported

MongoDB does not support the Windows Subsystem for Linux (WSL).MongoDB不支持Windows Linux子系统(WSL)。

Production Notes生产记录

Before deploying MongoDB in a production environment, consider the Production Notes document which offers performance considerations and configuration recommendations for production MongoDB deployments.在生产环境中部署MongoDB之前,请先参考生产备忘录文档,该文档为生产MongoDB部署提供了性能注意事项和配置建议。

Install MongoDB Community Edition安装MongoDB社区版

Follow these steps to install MongoDB Community Edition using the yum package manager.按照以下步骤使用yum软件包管理器安装MongoDB社区版。

1

Configure the package management system (yum).配置包管理系统(yum)。

Create a /etc/yum.repos.d/mongodb-org-4.4.repo file so that you can install MongoDB directly using yum:创建/etc/yum.repos.d/mongodb-org-4.4.repo文件,以便您可以使用yum直接安装MongoDB:

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

You can also download the .rpm files directly from the MongoDB repository.您还可以直接从MongoDB存储库下载.rpm文件。Downloads are organized by Red Hat / CentOS version (e.g. 7), then MongoDB release version (e.g. 4.4), then architecture (e.g. x86_64).下载按Red Hat/CentOS版本(如7)、MongoDB发行版(如4.4)和体系结构(如x86_64)组织。Odd-numbered MongoDB release versions, such as 4.3, are development versions and are unsuitable for production deployment.奇数MongoDB发行版(如4.3)是开发版本,不适合生产部署。

2

Install the MongoDB packages.安装MongoDB包。

To install the latest stable version of MongoDB, issue the following command:要安装MongoDB的最新稳定版本,请发出以下命令:

sudo yum install -y mongodb-org

Alternatively, to install a specific release of MongoDB, specify each component package individually and append the version number to the package name, as in the following example:或者,要安装特定版本的MongoDB,请分别指定每个组件包,并将版本号附加到包名中,如下例所示:

sudo yum install -y mongodb-org-4.4.2 mongodb-org-server-4.4.2 mongodb-org-shell-4.4.2 mongodb-org-mongos-4.4.2 mongodb-org-tools-4.4.2

You can specify any available version of MongoDB.您可以指定MongoDB的任何可用版本。However yum upgrades the packages when a newer version becomes available.然而,当更新的版本变得可用时,yum将升级软件包。To prevent unintended upgrades, pin the package.为防止意外升级,请锁定包。To pin a package, add the following exclude directive to your /etc/yum.conf file:要固定包,请将以下exclude指令添加到/etc/yum.conff文件:

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

Run MongoDB Community Edition运行MongoDB社区版

Prerequisites先决条件

ulimit

Most Unix-like operating systems limit the system resources that a process may use.大多数类Unix操作系统限制进程可能使用的系统资源。These limits may negatively impact MongoDB operation, and should be adjusted.这些限制可能会对MongoDB的运行产生负面影响,应该进行调整。See UNIX ulimit Settings for the recommended settings for your platform.请参阅UNIX ulimit设置,以获取针对您的平台的建议设置。

Note

Starting in MongoDB 4.4, a startup error is generated if the ulimit value for number of open files is under 64000.从MongoDB 4.4开始,如果打开文件数的ulimit值低于64000,则会生成启动错误。

Directory Paths目录路径

To Use Default Directories使用默认目录

By default, MongoDB runs using the mongod user account and uses the following default directories:默认情况下,MongoDB使用mongod用户帐户运行,并使用以下默认目录:

  • /var/lib/mongo (the data directory)
  • /var/log/mongodb (the log directory)
If you installed via the package manager,如果您是通过软件包管理器安装的,
The default directories are created, and the owner and group for these directories are set to mongod.将创建默认目录,并将这些目录的所有者和组设置为mongod
If you installed by downloading the tarballs,如果你是通过下载tarballs安装的,

The default MongoDB directories are not created.不会创建默认的MongoDB目录。To create the MongoDB data and log directories:要创建MongoDB数据和日志目录,请执行以下操作:

sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb

By default, MongoDB runs using the mongod user account.默认情况下,MongoDB使用mongod用户帐户运行。Once created, set the owner and group of these directories to mongod:创建后,将这些目录的所有者和组设置为mongod

sudo chown -R mongod:mongod <directory>
To Use Non-Default Directories使用非默认目录

To use a data directory and/or log directory other than the default directories:要使用默认目录以外的数据目录和/或日志目录,请执行以下操作:

  1. Create the new directory or directories.创建一个或多个新目录。
  2. Edit the configuration file /etc/mongod.conf and modify the following fields accordingly:编辑配置文件/etc/mongod.conf文件并相应修改以下字段:

    • storage.dbPath to specify a new data directory path (e.g. /some/data/directory)指定新的数据目录路径(例如/some/data/directory
    • systemLog.path to specify a new log file path (e.g. /some/log/directory/mongod.log)指定新的日志文件路径(例如/some/log/directory/mongod.log)
  3. Ensure that the user running MongoDB has access to the directory or directories:确保运行MongoDB的用户可以访问以下目录:

    sudo chown -R mongod:mongod <directory>

    If you change the user that runs the MongoDB process, you must give the new user access to these directories.如果更改运行MongoDB进程的用户,则必须授予新用户访问这些目录的权限。

  4. Configure SELinux if enforced. 配置SELinux(如果强制)。See Configure SELinux.请参见配置SELinux

Configure SELinux配置SELinux

Important

If SELinux is in enforcing mode, you must customize your SELinux policy for MongoDB by making the following two policy adjustments:如果SELinux处于强制模式,则必须通过进行以下两个策略调整来为MongoDB自定义SELinux策略:

Permit Access to cgroup

The current SELinux Policy does not allow the MongoDB process to access /sys/fs/cgroup, which is required to determine the available memory on your system. If you intend to run SELinux in enforcing mode, you will need to make the following adjustment to your SELinux policy:

  1. Ensure your system has the checkpolicy package installed:

    sudo yum install checkpolicy
  2. Create a custom policy file 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
  3. Once created, compile and load the custom policy module by running these three commands:创建后,通过运行以下三个命令编译并加载自定义策略模块:

    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

The MongoDB process is now able to access the correct files with SELinux set to enforcing.MongoDB进程现在可以在SELinux设置为enforced的情况下访问正确的文件。

Permit Access to netstat for FTDC

The current SELinux Policy does not allow the MongoDB process to open and read /proc/net/netstat, which is required for Full Time Diagnostic Data Capture (FTDC).当前的SELinux策略不允许MongoDB进程打开和读取/proc/net/netstat,这是全职诊断数据捕获(FTDC)所必需的。If you intend to run SELinux in enforcing mode, you will need to make the following adjustment to your SELinux policy:如果要在enforcing模式下运行SELinux,则需要对SELinux策略进行以下调整:

  1. Ensure your system has the checkpolicy package installed:确保系统已安装checkpolicy包:

    sudo yum install checkpolicy
  2. Create a custom policy file mongodb_proc_net.te:

    cat > mongodb_proc_net.te <<EOF
    module mongodb_proc_net 1.0;
    
    require {
    type proc_net_t;
    type mongod_t;
    class file { open read };
    }
    
    #============= mongod_t ==============
    allow mongod_t proc_net_t:file { open read };
    EOF
  3. Once created, compile and load the custom policy module by running these three commands:

    checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod sudo semodule -i mongodb_proc_net.pp

Important

In addition to the above, you will also need to further customize your SELinux policy in the following two cases if SELinux is in enforcing mode:

Using a Custom MongoDB Directory Path
  1. Update the SELinux policy to allow the mongod service to use the new directory:

    sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>

    where specify one of the following types as appropriate:

    • mongod_var_lib_t for data directory
    • mongod_log_t for log file directory
    • mongod_var_run_t for pid file directory

    Note

    Be sure to include the .* at the end of the directory.

  2. Update the SELinux user policy for the new directory:

    sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>

    where specify one of the following types as appropriate:

    • mongod_var_lib_t for data directory
    • mongod_log_t for log directory
    • mongod_var_run_t for pid file directory
  3. Apply the updated SELinux policies to the directory:

    restorecon -R -v </some/MongoDB/directory>

For example:例如:

Tip

Be sure to include the .* at the end of the directory for the semanage fcontext operations.

  • If using a non-default MongoDB data path of /mongodb/data:

    sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
    sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
    restorecon -R -v '/mongodb/data'
  • If using a non-default MongoDB log directory of /mongodb/log (e.g. if the log file path is /mongodb/log/mongod.log):

    sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
    sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
    restorecon -R -v '/mongodb/log'
Using a Custom MongoDB Port
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

Procedure

Follow these steps to run MongoDB Community Edition on your system. These instructions assume that you are using the default settings.

Init System

To run and manage your mongod process, you will be using your operating system’s built-in init system. Recent versions of Linux tend to use systemd (which uses the systemctl command), while older versions of Linux tend to use System V init (which uses the service command).

If you are unsure which init system your platform uses, run the following command:

ps --no-headers -o comm 1

Then select the appropriate tab below based on the result:

  • systemd - select the systemd (systemctl) tab below.
  • init - select the System V Init (service) tab below.

1

Start MongoDB.

You can start the mongod process by issuing the following command:

sudo systemctl start mongod

If you receive an error similar to the following when starting mongod:

Failed to start mongod.service: Unit mongod.service not found.

Run the following command first:

sudo systemctl daemon-reload

Then run the start command above again.

2

Verify that MongoDB has started successfully.

You can verify that the mongod process has started successfully by issuing the following command:

sudo systemctl status mongod

You can optionally ensure that MongoDB will start following a system reboot by issuing the following command:

sudo systemctl enable mongod
3

Stop MongoDB.

As needed, you can stop the mongod process by issuing the following command:

sudo systemctl stop mongod
4

Restart MongoDB.

You can restart the mongod process by issuing the following command:

sudo systemctl restart mongod

You can follow the state of the process for errors or important messages by watching the output in the /var/log/mongodb/mongod.log file.

5

Begin using MongoDB.

Start a mongo shell on the same host machine as the mongod. You can run the mongo shell without any command-line options to connect to a mongod that is running on your localhost with default port 27017:

mongo

For more information on connecting using the mongo shell, such as to connect to a mongod instance running on a different host and/or port, see The mongo Shell.

To help you start using MongoDB, MongoDB provides Getting Started Guides in various driver editions. For the driver documentation, see Start Developing with MongoDB.

1

Start MongoDB.

You can start the mongod process by issuing the following command:

sudo service mongod start
2

Verify that MongoDB has started successfully

You can verify that the mongod process has started successfully by checking the contents of the log file at /var/log/mongodb/mongod.log for a line reading

[initandlisten] waiting for connections on port <port>

where <port> is the port configured in /etc/mongod.conf, 27017 by default.

You can optionally ensure that MongoDB will start following a system reboot by issuing the following command:

sudo chkconfig mongod on
3

Stop MongoDB.

As needed, you can stop the mongod process by issuing the following command:

sudo service mongod stop
4

Restart MongoDB.

You can restart the mongod process by issuing the following command:

sudo service mongod restart

You can follow the state of the process for errors or important messages by watching the output in the /var/log/mongodb/mongod.log file.

5

Begin using MongoDB.

Start a mongo shell on the same host machine as the mongod. You can run the mongo shell without any command-line options to connect to a mongod that is running on your localhost with default port 27017:

mongo

For more information on connecting using the mongo shell, such as to connect to a mongod instance running on a different host and/or port, see The mongo Shell.

To help you start using MongoDB, MongoDB provides Getting Started Guides in various driver editions. For the driver documentation, see Start Developing with MongoDB.

Uninstall MongoDB Community Edition

To completely remove MongoDB from a system, you must remove the MongoDB applications themselves, the configuration files, and any directories containing data and logs. The following section guides you through the necessary steps.

Warning

This process will completely remove MongoDB, its configuration, and all databases. This process is not reversible, so ensure that all of your configuration and data is backed up before proceeding.

1

Stop MongoDB.

Stop the mongod process by issuing the following command:

sudo service mongod stop
2

Remove Packages.

Remove any MongoDB packages that you had previously installed.

sudo yum erase $(rpm -qa | grep mongodb-org)
3

Remove Data Directories.

Remove MongoDB databases and log files.

sudo rm -r /var/log/mongodb sudo rm -r /var/lib/mongo

Additional Information

Localhost Binding by Default

By default, MongoDB launches with bindIp set to 127.0.0.1, which binds to the localhost network interface. This means that the mongod can only accept connections from clients that are running on the same machine. Remote clients will not be able to connect to the mongod, and the mongod will not be able to initialize a replica set unless this value is set to a valid network interface.

This value can be configured either:

  • in the MongoDB configuration file with bindIp, or
  • via the command-line argument --bind_ip

Warning

Before binding to a non-localhost (e.g. publicly accessible) IP address, ensure you have secured your cluster from unauthorized access. For a complete list of security recommendations, see Security Checklist. At minimum, consider enabling authentication and hardening network infrastructure.

For more information on configuring bindIp, see IP Binding.

MongoDB Community Edition Packages

MongoDB Community Edition is available from its own dedicated repository, and contains the following officially-supported packages:

Package NameDescription描述
mongodb-org A metapackage that automatically installs the component packages listed below.
mongodb-org-server Contains the mongod daemon, associated init script, and a configuration file (/etc/mongod.conf). You can use the initialization script to start mongod with the configuration file. For details, see Run MongoDB Community Edition.
mongodb-org-mongos Contains the mongos daemon.
mongodb-org-shell Contains the mongo shell.
mongodb-org-tools

A metapackage that automatically installs the component packages listed below:

Package NameDescription描述
mongodb-database-tools

Contains the following MongoDB database tools:

mongodb-org-database-tools-extra Contains the install_compass script