mongodb安装

本文详细介绍了如何通过下载、手动配置、systemctl管理和docker-compose方式安装及启动MongoDB,包括设置环境变量、配置文件、权限管理、日志路径和解决常见问题,如docker启动报错和权限检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解压方式安装mongodb

1下载地址

Download MongoDB Community Server | MongoDB

image-20231208150239662

2.启动mongodb

2.1mongo用户启动

mongo不推荐使用root用户运行所以要新建低级用户

useradd mongo
2.2创建数据目录
mkdir /app/mongo/{conf,data,logs}
2.3配置环境变量

vim /etc/profile 追加内容

export PATH=$PATH:{安装路径}/bin

应用配置:source vim /etc/profile

2.4编辑配置文件

vim /app/mongo/conf/mongo.conf

systemLog:
  destination: file
  path: /app/mongo/logs/mongod.log     # log path
  logAppend: true
storage:
  dbPath:/app/mongo/data # data directory
  engine: wiredTiger      #存储引擎
  journal:      #是否启用journal日志
    enabled: true
net:
 bindIp: 0.0.0.0
 port: 28018    # port
processManagement:
 fork: true
2.5命令启动mongo
mongod -f /app/mongo/conf/mongo.conf
2.6命令关闭mongo
mongod -f /app/mongo/conf/mongo.conf --shutdown

3.交由systemctl管理

3.1新建system管理服务配置文件

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

[Unit]
Description=mongo
After=network.target remote-fs.target nss-lookup.target
 
[Service]  
Type=forking
User=mongo
Group=mongo
ExecStart=/app/mongo/mongodb-4.4.26/bin/mongod --config /app/mongo/mongodb-4.4.26/conf/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/app/mongo/mongodb-4.4.26/bin/mongod --shutdown /app/mongo/mongodb-4.4.26/conf/mongo.conf
PrivateTmp=true
3.2读取配置,启动
systemctl daemon-reload
systemctl start mongod

4.启动mongodb常见报错:

  1. 没有正常关闭导致的报错

这种报错就很难受,一般是由于没有正确关闭导致的报错,但是目录没有权限也是会报这种错误,可以根据日志文件的报错信息排查,如果真的时kill - 9 pid然后导致的报错,那么很有可能是数据库数据混乱了,可以尝试下面的解决办法,如果还是不行,那就有可能要恢复备份文件了,很坑,所以一定要注意,不要kill - 9 ,可以kill -15 也可以 mongod -f mongo.conf --shutdown关闭

​ 解决方法:

1. 可以尝试删除data目录下 mongod.lock 文件
2.  mongod --repair -f  mongo.conf

注:--repair  修复数据库
需要注意的是,mongod --repair 命令会关闭 MongoDB 实例并对数据库文件进行修复,这个过程会耗费较长的时间并且会导致数据库不可用。因此,在生产环境中,建议尽量避免频繁的使用 mongod --repair 命令,而是应该在必要的时候才使用它

docker-compose安装mongodb

1.建目录

mkdir {conf,data,log}

chmod  777  log

直接将log文件夹权限改为777

├── conf

├── data

├── log

├── init-scripts # 存放初始化脚本,可以初始化时帮助新建用户

├── docker-compose.yml
├── Dockerfile

2.配置mongod.conf文件

vim ./conf/mongod.conf

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
storage:
  dbPath: /data/db
  engine: wiredTiger
  journal:
    enabled: true
net:
  bindIpAll: true
  port: 27017
  maxIncomingConnections: 10000
security:
  authorization: enabled

可该参数:

  • 修改systemLog.path字段指定MongoDB的日志文件路径
  • 修改storage.dbPath字段指定MongoDB的数据文件路径
  • 修改net.port字段指定MongoDB的端口号
  • 修改security.authorization字段指定是否启用MongoDB的身份验证机制

3.编写初始化脚本(可以不yao)

vim ./init-scripts/init.js

要给init.js执行权限 chmod +x init.js

用于初始化MongoDB。可以写可以不写

脚本只会在第一次创建data目录的时候执行,除非将data删除创建,否则是无用的

db = db.getSiblingDB('newDB');  // 创建一个名为"newDB"的DB,getSiblingDB方法会进入这个库
db.createUser(  // 创建一个名为"shon"的用户,设置密码和权限
    {
        user: "user1",
        pwd: "user1",
        roles: [
            { role: "dbOwner", db: "newDB"}
        ]
    }
);
db.createCollection("newCollection");  // 在"newDB"中创建一个名为"newCollection"的Collection




## 以下脚本会创建一个newDB库并进入,创建五条测试数据
// 连接到指定的数据库
db = db.getSiblingDB('newDB');  
db.createUser(  
    {
        user: "user1",
        pwd: "user1",
        roles: [
            { role: "dbOwner", db: "newDB"}
        ]
    }
);
// 向指定的集合中插入数据
db.info_table.insertMany([
    { name: "Alice", age: 30 },
    { name: "Bob", age: 25 },
    { name: "Charlie", age: 35 },
    { name: "David", age: 28 },
    { name: "Eve", age: 32 }
]);

4.编写Dockerfile文件

用于初始化Docker容器,将配置文件挂载进去

FROM mongo:4.4

# 创建存放配置文件和初始化脚本的目录
RUN mkdir -p /etc/mongo/conf
# 将本地的配置文件拷贝进容器
COPY conf/* /etc/mongo/conf/
# 将本地的setup.js映射到Docker容器中
COPY ./init-scripts/* /docker-entrypoint-initdb.d/

5.编写docker-compose配置文件

vim docker-compose.yml

version: "3"
services:
  mongo-express:  
    image: mongo-express
    restart: always
    ports:
    - 8889:8081  
    environment: 
      ME_CONFIG_MONGODB_SERVER: mongo4.4
      ME_CONFIG_MONGODB_ADMINUSERNAME: admin
      ME_CONFIG_MONGODB_ADMINPASSWORD: admin
      ME_CONFIG_MONGODB_PORT: 27017
      ME_CONFIG_BASICAUTH_USERNAME: admin         #mongo-express的登录用户认证
      ME_CONFIG_BASICAUTH_PASSWORD: admin         
    links:
      - mongo
    networks:
      - mongo-compose-network

  mongo:
    build: ./
    container_name: mongo4.4
    restart: always
    environment:
      MONGO_INITDB_DATABASE: admin
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: admin
    ports:
      - 27017:27017
    volumes:
      - ./data:/data/db
      - ./log:/var/log/mongodb
      - ./conf:/etc/mongo/conf
      - ./init-scripts:/docker-entrypoint-initdb.d/
    command: mongod --config  /etc/mongo/conf/mongo.conf
    networks:
       - mongo-compose-network
    
networks: 
    mongo-compose-network:
      driver: bridge

6.常见问题:

docker启动mongo报错 Failed to open /var/log/mongodb/mongod.log

docker中mongo启动用户为mongodb用户,检查你的/var/log/mongodb/mongod.log文件的目录以及文件的权限,是否允许mongodb读写

mongo/conf/mongo.conf
networks:
- mongo-compose-network

networks:
mongo-compose-network:
driver: bridge








### 6.常见问题:

<u>docker启动mongo报错  `Failed to open /var/log/mongodb/mongod.log`</u>

>docker中mongo启动用户为mongodb用户,检查你的/var/log/mongodb/mongod.log文件的目录以及文件的权限,是否允许mongodb读写





<think>好的,我现在需要帮助用户安装MongoDB。首先,用户的问题是关于如何安装MongoDB,他们可能已经查阅了一些资料,但需要更明确的步骤指导。根据提供的引用内容,特别是引用[1]、[2]、[3],我需要整合这些信息,确保步骤正确且符合用户的操作系统,这里假设用户使用的是Windows系统,因为引用中提到了Win+R和cmd命令。 首先,我需要确认用户已经下载了MongoDB安装程序。根据引用[2]和[3],官方网站提供了社区版的下载链接,用户需要选择合适的操作系统和版本。这里可能需要提醒用户注意选择正确的版本,比如Windows的MSI安装包。 接下来是安装步骤。根据引用[3],安装过程中可能需要选择安装路径,默认是C盘,但用户可能希望安装到其他位置,需要说明如何修改路径。然后,安装完成后,用户需要创建数据存储目录,这一点在引用[1]中提到非常重要,否则服务无法启动。需要详细说明如何创建data/db目录,并强调必须手动创建,否则启动服务会失败。 然后是配置环境变量,这一步可能对新手来说不太熟悉,需要指导用户如何找到MongoDB安装路径,并将其bin目录添加到系统环境变量中,这样用户就可以在任何位置使用mongo和mongod命令了。 接下来是启动MongoDB服务,这里有两种方式:直接通过命令行启动,或者将MongoDB安装为Windows服务以便自动启动。引用[1]中提到了使用mongod --dbpath命令来指定数据目录启动服务,这适用于临时启动。而作为服务安装的话,用户需要以管理员权限运行命令,并指定配置文件,可能需要创建配置文件,但引用中没有详细说明,可能需要补充这部分内容,或者引导用户参考官方文档。 最后是验证安装,用户可以通过连接实例或使用MongoDB Compass来确认安装是否成功。同时,用户可能遇到问题,比如服务启动失败,常见原因可能是数据目录不存在或端口被占用,需要提醒用户检查这些方面。 此外,用户可能需要图形界面工具,推荐MongoDB Compass,并指导如何下载安装。相关问题部分需要考虑用户可能进一步的问题,比如配置用户权限、配置文件管理、连接问题等,这些都需要提前预判并生成相关问题,帮助用户深入使用MongoDB。 需要确保所有步骤清晰,避免使用专业术语过多,用简单的中文说明,同时注意LaTeX格式的正确应用,虽然在这个问题中可能用不上数学公式,但如果有路径或代码块,需要使用正确的格式。例如,命令行代码应该用反引号包裹,路径部分可能需要用斜体或代码块突出显示。 总结步骤:下载安装包、运行安装程序、创建数据目录、配置环境变量、启动服务、验证安装、问题排查。每个步骤都要详细但简洁,确保用户能一步步跟随操作。同时,引用来源要正确标注,比如引用[1]关于数据目录的创建,引用[3]关于安装步骤等。</think>### 如何安装MongoDB? 以下是MongoDB在Windows系统下的详细安装步骤: --- #### **1. 下载安装包** - 访问[MongoDB社区版下载页面](https://www.mongodb.com/try/download/community)(引用[2][3]),选择操作系统为Windows,版本建议选择最新稳定版,下载类型选择`MSI`安装包。 --- #### **2. 运行安装程序** - 双击下载的`.msi`文件,按提示操作: - 选择`Complete`(完整安装)或自定义路径(如`D:\MongoDB\Server\6.0`)。 - 取消勾选`Install MongoDB Compass`(可选,Compass是图形化管理工具,安装时间较长)。 - 完成安装后,记录安装路径(如`C:\Program Files\MongoDB\Server\6.0\bin`)。 --- #### **3. 创建数据存储目录** - MongoDB启动前需手动创建数据目录(引用[1]): - 在安装盘(如`D:\MongoDB`)下新建文件夹:`data\db`。 - 示例路径:`D:\MongoDB\data\db`。 --- #### **4. 配置环境变量(可选)** - 将MongoDB的`bin`目录添加到系统环境变量: - 右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → 编辑Path → 添加`C:\Program Files\MongoDB\Server\6.0\bin`。 --- #### **5. 启动MongoDB服务** - **方式一:临时启动(关闭窗口即停止服务)** 1. 以管理员身份打开cmd。 2. 输入命令: ```bash mongod --dbpath D:\MongoDB\data\db ``` 3. 出现`waiting for connections on port 27017`表示启动成功。 - **方式二:安装为Windows服务(推荐)** 1. 创建配置文件`mongod.cfg`(路径如`D:\MongoDB\mongod.cfg`),内容: ```yaml systemLog: destination: file path: D:\MongoDB\log\mongod.log logAppend: true storage: dbPath: D:\MongoDB\data\db ``` 2. 以管理员身份运行cmd,执行: ```bash mongod --config "D:\MongoDB\mongod.cfg" --install net start MongoDB ``` --- #### **6. 验证安装** - 打开新cmd窗口,输入`mongo`进入MongoDB Shell,显示`>`表示连接成功。 - 或下载[MongoDB Compass](https://www.mongodb.com/try/download/compass)(图形界面工具),连接`mongodb://localhost:27017`。 --- #### **常见问题** 1. **启动失败** - 检查数据目录路径是否正确(引用[1])。 - 确保端口`27017`未被占用。 2. **权限问题** - 以管理员身份运行cmd。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值