下载安装包到 /user/local

sudo wget -P /usr/local <https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.14.tgz>

解压

sudo tar -zxvf /usr/local/mongodb-linux-x86_64-rhel70-4.4.14.tgz
sudo mv /usr/local/mongodb*/ /usr/local/mongodb-4.4.14/

配置环境变量(可以省略)

sudo vim /etc/profile

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 上面添加如下内容后保存退出

export PATH=/usr/local/mongodb-4.4.14/bin:$PATH

使用以下命令让环境变量生效

source /etc/profile

创建配置文件和日志文件

创建数据库和日志存放目录,文件夹权限是 755

cd /usr/local/mongodb-4.4.14 && sudo mkdir -m 755 data ./data/logs ./data/db

创建配置文件和日志文件

sudo touch {mongodb.conf,./data/logs/mongo.log}

添加配置文件内容

sudo vim mongodb.conf
systemLog:
  #日志级别, 默认 0, 1-5 均会包含 debug 信息
  #verbosity: 1
  #MongoDB发送所有日志输出的目标指定为文件
  destination: file
  path: "/usr/local/mongodb-4.4.14/data/logs/mongo.log"
  logAppend: true
storage:
  #存储其数据的目录
  dbPath: "/usr/local/mongodb-4.4.14/data/db"
  journal:
    ##journal 日志持久存储, journal 日志用来数据恢复, 通常用于故障恢复
    enabled: true
processManagement: 
  #启用在后台运行mongos或mongod进程的守护进程模式
  fork: true
net:
  #服务实例绑定的IP,默认是 localhost
  bindIp: 0.0.0.0
  port: 27017
security:
  #开启密码登录
  authorization: enabled
#operationProfiling:
#  slowOpThresholdMs: <int>    #数据库 profiler 判定一个操作是"慢查询"的时间阈值, 单位毫秒. mongod 会把慢查询记录到日志中,默认 100ms
#  mode: <string>    #数据库 profiler 级别, 操作的性能信息将会被写入日志文件中, 可选值 "off"--关闭 profiling, "slowOp"--只包包含慢操作, "all"--记录所有操作
#数据库profiling会影响性能,建议只在性能调试阶段开启

Esc 保存退出 (:wq)

设置开机自启

创建 mongodb.service 服务文件

sudo vim /lib/systemd/system/mongodb.service

写入 mongodb.service 服务文件内容

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

设置权限

sudo chmod 754 /lib/systemd/system/mongodb.service
#重新加载配置
sudo systemctl daemon-reload
#启动服务
sudo systemctl start mongodb.service
#关闭服务
sudo systemctl stop mongodb.service
#开机启动
sudo systemctl enable mongodb.service
#查看状态
sudo systemctl status mongodb.service

防火墙设置

  • 或者参考 iptables

CentOS7 默认使用的防火墙是 firewall, 我们需要开放防火墙端口或者关闭防火墙。

开放防火墙端口:

#开放 27017 端口
sudo firewall-cmd --permanent --add-port=27017/tcp
#修改配置后需要重启防火墙
sudo firewall-cmd --reload
#查询 27017 端口是否开放
sudo firewall-cmd --query-port=27017/tcp

关闭防火墙:

#停止防火墙
sudo systemctl stop firewalld.service
#禁止防火墙开机启动
sudo systemctl disable firewalld.service

设置密码

进入 Mongo 控制台

cd /usr/local/mongodb-4.4.14/bin && ./mongo
# 出现下面的版本信息提示
# MongoDB shell version v4.4.14
# connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
# Implicit session: session { "id" : UUID("d893596b-36b7-4b4a-8659-990bd42f6d9b") }
# MongoDB server version: 4.4.14
# Welcome to the MongoDB shell.
# For interactive help, type "help".
# For more comprehensive documentation, see
#         <https://docs.mongodb.com/>
# Questions? Try the MongoDB Developer Community Forums
#         <https://community.mongodb.com>
> 

添加用户和密码

use admin
 
db.createUser(
    {
        user:"root",
        pwd:"替换为密码",
        roles:[{role:"root",db:"admin"}]
    }
)
 
#或者不换行输入
db.createUser({user:"root",pwd:"替换为密码",roles:[{role:"root",db:"admin"}]})

命令 exit 退出 Mongo 控制台

重启 Mongo

sudo systemctl restart mongodb.service

验证是否生效

./mongo admin -u root -p你的密码

或者进入 Mongo 控制台验证

use admin
show users #注意这里会被拒绝说明密码登录功能成功开启
 
db.auth("root", "你的密码") #如果返回1, 则表示成功
//db.auth()方法理解为 用户的验证功能

常用命令

show users  // 查看当前库下的用户
 
db.dropUser('testadmin')  // 删除用户
 
db.updateUser('root', {pwd: '654321'})  // 修改用户密码
 
db.auth('root', '654321')  // 密码认证

启动失败时可以尝试以下方法恢复

# 切换到 root 用户(可选)
su
# 进入执行目录
cd /usr/local/mongodb-4.4.14/bin
# 执行恢复程序
mongod -dbpath /usr/local/mongodb-4.4.14/data/db --repair
# 重新启动 mongodb
sudo systemctl restart mongodb.service