方法一:使用包管理器安装(推荐,适用于Ubuntu/Debian、CentOS/RHEL等主流发行版)
sudo apt update
sudo apt install -y mongodb-org
sudo yum update
sudo yum install -y mongodb-org
方法二:手动编译安装(适用于需要特定版本的场景)
sudo apt install -y build-essential libssl-dev(Ubuntu/Debian)或 sudo yum install -y gcc openssl-devel(CentOS/RHEL)。wget https://fastdl.mongodb.org/src/mongodb-src-r4.4.6.tar.gz → tar -zxvf mongodb-src-r4.4.6.tar.gz → cd mongodb-src-r4.4.6。mkdir build && cd build → cmake .. → make → sudo make install。创建数据与日志目录
sudo mkdir -p /var/lib/mongodb # 数据存储目录
sudo mkdir -p /var/log/mongodb # 日志存储目录
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改所有者(包管理器安装后默认用户为mongodb)
sudo chown -R mongodb:mongodb /var/log/mongodb
编辑配置文件
配置文件路径通常为/etc/mongod.conf(包管理器安装)或/usr/local/mongodb/mongod.conf(手动编译安装),需修改以下关键参数:
storage:
dbPath: /var/lib/mongodb # 数据目录
journal:
enabled: true # 启用日志(确保数据安全)
systemLog:
destination: file
path: /var/log/mongodb/mongod.log # 日志路径
logAppend: true # 追加日志(避免重启覆盖)
net:
port: 27017 # 默认端口
bindIp: 0.0.0.0 # 绑定所有IP(允许远程访问,生产环境建议限制为特定IP)
security:
authorization: enabled # 启用身份验证(必须步骤,提升安全性)
设置环境变量(可选)
若手动编译安装,需将MongoDB可执行文件目录加入环境变量:
echo 'export PATH=/usr/local/mongodb/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
启动MongoDB服务
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
验证配置
连接到MongoDB Shell,检查连接状态:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
若返回结果中"authenticated": true,则表示认证已启用;若为false,需检查security.authorization配置是否正确。
创建管理员用户
连接到MongoDB Shell,切换到admin数据库并创建管理员账号:
mongo
use admin
db.createUser({
user: "admin",
pwd: "your-strong-password", # 使用强密码
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})
退出Shell:exit。
启用认证
确保配置文件中security.authorization: enabled已开启,重启服务使配置生效:
sudo systemctl restart mongod
测试认证
使用创建的管理员账号连接:
mongo -u admin -p your-strong-password --authenticationDatabase admin
Linux内核优化
ulimit -n 64000 # 临时生效
echo "mongodb soft nofile 64000" | sudo tee -a /etc/security/limits.conf # 永久生效
echo 1 | sudo tee /proc/sys/vm/nr_hugepages
MongoDB配置优化
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 示例:4GB
operationProfiling:
mode: slowOp # 记录慢查询
slowOpThresholdMs: 100 # 慢查询阈值(毫秒)
索引优化
为常用查询字段创建索引,提升查询速度:
use your_database
db.your_collection.createIndex({ field_name: 1 }) # 1表示升序索引,-1表示降序
bindIp设置为服务器实际IP(而非0.0.0.0),并通过防火墙限制访问端口(如ufw allow 27017)。mongodump工具),避免数据丢失。mongostat、mongotop或第三方工具如Prometheus+Granafa)。