1.安装相关依赖

centos依赖

sudo yum install libcurl openssl

ubuntu依赖

sudo apt-get install libcurl4 openssl liblzma5

2.下载二进制压缩包,并解压

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.11.tgz

tar -zxvf mongodb-linux-x86_64-rhel70-7.0.11.tgz

mv mongodb-linux-x86_64-rhel70-7.0.11/* /usr/local/mongodb

3.确保二进制文件位于 PATH 环境变量中列出的目录下

MongoDB 二进制文件位于mongodb-directory的 bin/ 目录中。您可以执行以下任一操作:

  • 将二进制文件复制到 PATH 变量中列出的目录中,例如 /usr/local/bin(根据需要使用您的安装目录来更新 /path/mongodb-directory/)

sudo cp /path/mongodb-directory/bin/* /usr/local/bin/
  • 创建指向 PATH 变量中所列目录的二进制文件的符号链接,例如 /usr/local/bin(根据需要使用您的安装目录更新 /path/mongodb-directory/)

sudo ln -s  /path/mongodb-directory/bin/* /usr/local/bin/
  • 直接配置系统环境

vim /etc/profile

export MONGODB_HOME=/usr/local/mongodb 
export PATH=$MONGODB_HOME/bin:$PATH

保存系统配置

source /etc/profile

4.创建数据库目录

默认情况下 MongoDB 启动后会初始化以下两个目录:

  • 数据存储目录:/var/lib/mongodb

  • 日志文件目录:/var/log/mongodb

我们在启动前可以先创建这两个目录并设置当前用户有读写权限:

sudo mkdir -p /var/lib/mongodata

sudo mkdir -p /var/log/mongodblog

默认情况下,MongoDB 使用 mongod 用户帐户运行。创建一个 mongod 和一个 mongodb 群组。确保 mongod 属于该群组,然后将这些目录的所有者和群组设为 mongod:

adduser -s /sbin/nologin mongod #创建禁止登陆的用户

sudo chown -R mongod:mongod /var/lib/mongodata #设置权限

sudo chown -R mongod:mongod /var/log/mongodblog #设置权限

5.MongoDB 配置文件 

vim /usr/local/mongdb/mongod.conf

#详细记录输出
verbose=true
#绑定IP
bind_ip=0.0.0.0
#指定服务端口号
port=27017
#指定日志文件,注意是指定文件不是目录
logpath=/var/log/mongodb/logs/mongodb.log
#使用追加方式写日志
logappend=true
#指定数据库路径
dbpath=/var/lib/mongodb/db
#设置每个数据库将被保存在一个单独的目录
directoryperdb=true
#启用验证(设置账号密码之后,这里要修改为true)
auth=false
#以守护进程的方式运行MongoDB,创建服务器进程
fork=true
#安静退出
quiet=true
#最大使用内存(不加这个,mongodb会默认最多占一半内存)
wiredTigerCacheSizeGB=0.8

配置参数详细说明

  1. bind_ip:指定MongoDB监听的IP地址。默认为127.0.0.1,表示只监听本地回环地址。如果你希望MongoDB能够通过网络访问,可以将该选项设置为0.0.0.0,表示监听所有可用的IP地址。

  2. port:指定MongoDB监听的端口号。默认为27017,通常不需要修改。

  3. dbpath:指定MongoDB数据文件存储的路径。默认为/var/lib/mongodb。

  4. logpath:指定MongoDB日志文件的路径。默认为/var/log/mongodb/mongod.log。

  5. logappend:指定是否在日志文件末尾追加日志。默认为false,表示每次启动MongoDB时,会清空日志文件。

  6. journal.enabled:指定是否启用Journaling,用于数据持久性和恢复。默认为true,建议保持默认值。

  7. storage.wiredTiger.engineConfig.cacheSizeGB:指定WiredTiger存储引擎的缓存大小,单位为GB。默认为总系统内存的一半,建议根据实际情况调整。

  8. security.authorization:指定是否启用身份验证。默认为disabled,表示不启用身份验证。在生产环境中,建议将该选项设置为enabled,并配置合适的用户和角色权限。

  9. replication.replSetName:指定复制集的名称。默认为空,表示不启用复制集。如果需要使用复制集功能,可以将该选项设置为一个非空的名称。

  10. net.maxIncomingConnections:指定MongoDB最大允许的入站连接数。默认为65536,根据实际情况进行调整。

  11. processManagement.fork:指定是否在后台运行MongoDB进程。默认为true,表示在后台运行。如果需要在前台运行,可以将该选项设置为false。

测试是否安装成功,输出如下日志算成功

mongod -f /etc/mongod.conf

/usr/local/mongdb/mongod.conf

about to fork child process, waiting until server is ready for connections.

forked process: 18885

添加mongodb.service,并设置开机自启

vim /etc/systemd/system/mongodb.service

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongdb/bin/mongod --config /usr/local/mongdb/mongod.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongdb/mongod.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target

设置权限

sudo chmod +x /etc/systemd/system/mongodb.service

6.启动 Mongodb 服务:

systemctl start mongodb   #启动服务
systemctl enable mongodb   #设置开机启动
systemctl disable mongodb  #关闭开机启动

查看服务状态

systemctl start mongodb
[root@localhost bin]# systemctl status mongodb
● mongodb.service - mongodb
   Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2024-06-07 20:17:34 CST; 4min 56s ago
  Process: 5926 ExecStart=/usr/local/mongdb/bin/mongod --config /usr/local/mongdb/mongod.conf (code=exited, status=0/SUCCESS)
 Main PID: 5928 (mongod)
   CGroup: /system.slice/mongodb.service
           └─5928 /usr/local/mongdb/bin/mongod --config /usr/local/mongdb/mongod.conf

6月 07 20:17:32 localhost.localdomain systemd[1]: Starting mongodb...
6月 07 20:17:32 localhost.localdomain mongod[5926]: about to fork child process, waiting until server is ready for connections.
6月 07 20:17:32 localhost.localdomain mongod[5926]: forked process: 5928
6月 07 20:17:34 localhost.localdomain mongod[5926]: child process started successfully, parent exiting
6月 07 20:17:34 localhost.localdomain systemd[1]: Started mongodb.

安装客户端

6.0版本后不带mongo工具,需自己安装去官网mongodbsh

设置登录用户

> use admin
#创建管理用户,root权限
db.createUser( { user: "root", pwd: "123456", roles: [ { role: "root", db: "admin" } ] } )
#验证
db.auth("root", "123456")
#返回1则成功!

验证通过之后,将 mongod.conf里面的

auth=false 修改成

auth=true