记得关注一下博主,博主每天都会更新IT技术,让你有意想不到的小收获哦^_^





MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。


MongoDB 工具说明

工具 描述 备注
mongo MongoDB 客户端 MongoDB 6版本以上使用mongosh工具替换
mongod MongoDB 服务端工具
mongodump 备份数据库工具
mongorestore 恢复数据库工具
mongos mongos 是 MongoDB shard 的缩写,它是一个为应用层提供查询请求并决定数据在 MongoDB 分片中位置的路由服务。
mongostat mongostat 是 mongodb 自带的状态检测工具,在命令行下使用,会间隔固定时间获取 mongodb 的当前运行状态,并输出。
mongotop mongotop 提供了一个方法,用来跟踪一个 MongoDB 的实例,查看哪些大量的时间花费在读取和写入数据。 mongotop 提供每个集合的水平的统计数据。默认情况下,mongotop 返回值的每一秒。
mongoperf 用于评估磁盘随机 IO 性能

软件环境

[root@mongodb ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

[root@mongodb ~]# mongod -version
db version v4.4.18
Build Info: {
    "version": "4.4.18",
    "gitVersion": "8ed32b5c2c68ebe7f8ae2ebe8d23f36037a17dea",
    "openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel70",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}



1、下载MongoDB安装包

MongoDB软件包下载地址: https://www.mongodb.com/try/download/community 
yum -y install vim net-tools wget

### MongoDB服务端安装包
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.18-1.el7.x86_64.rpm -P /data/software

### MongoDB服务端安装包
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.18-1.el7.x86_64.rpm -P /data/software

### mongodump和mongorestore备份与恢复工具
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.6.1.tgz -P /data/software



2、安装MongoDB

rpm -ivh /data/software/mongodb-org-server-4.4.18-1.el7.x86_64.rpm
rpm -ivh /data/software/mongodb-org-shell-4.4.18-1.el7.x86_64.rpm
tar xf /data/software/mongodb-database-tools-rhel70-x86_64-100.6.1.tgz -C /mnt/
mv /mnt/mongodb-database-tools-rhel70-x86_64-100.6.1/bin/* /usr/local/bin/



3、查看安装MongoDB版本

mongod -version 
mongo --version
mongodump --version
mongorestore --version



4、自定义MongoDB数据目录路径和日志文件路径

[root@mongodb ~]# id mongod
uid=997(mongod) gid=993(mongod) groups=993(mongod)

### storage: dbPath: /var/lib/mongo  指定新的数据目录路径。
### systemLog:   path: /var/log/mongodb/mongod.log  指定日志文件路径。
[root@mongodb ~]# vim /etc/mongod.conf
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  wiredTiger:

### 确保MongoDB数据目录和日志目录都是属主mongod和属组mongod
[root@mongodb ~]# ls -ld /var/lib/mongo/
drwxr-xr-x 2 mongod mongod 6 Nov 15 08:35 /var/lib/mongo/
[root@mongodb ~]# ls -ld /var/log/mongodb/
drwxr-xr-x 2 mongod mongod 24 Nov 29 00:53 /var/log/mongodb/



5、启动MongoDB服务

systemctl start mongod
systemctl status mongod



6、设置MongoDB服务对外允许访问

提示:默认只允许本地登录

[root@mongodb ~]# cat /etc/mongod.conf
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
### 把bindIp:127.0.0.1修改成以下参数
bindIp: 0.0.0.0

### 重启MongoDB服务
[root@mongodb ~]# systemctl restart mongod

### mongo命令默认格式 mongo --host 127.0.0.1 --port 27017
[root@mongodb ~]# mongo
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB



7、使用Robo 3T开源客户端工具远程连接

提示:Robo 3T官网开源工具下载地址 https://blog.robomongo.org/studio3t-free/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述




8、MongoDB开启用户认证登录


(1)、开启用户认证登录

[root@mongodb ~]# vim /etc/mongod.conf 
security:
authorization: enabled  # 冒号后面需要空一格

### 重启MongoDB服务
systemctl restart mongod

(2)、创建新账号授权超级管理员权限

### 本地MongoDB客户端登录
[root@mongodb ~]# mongo
### 进入admin库
> use admin
switched to db admin
### 查看当前登录的库
> db
admin
### 创建一个新账号,用户名admin,密码admin,权限赋予管理员权限root
> db.createUser({user:"admin",pwd:"admin",roles:["root"]})
Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
### 授权账号,输入admin用户名和admin密码,按回车确认, 返回1表示认证成功
> db.auth("admin","admin")
1

### 本地MongoDB客户端登录
mongo --host 127.0.0.1 --port 27017 -u "admin" -p "admin"
mongo --host 127.0.0.1 --port 27017 -u "admin" -p "admin" admin
mongo mongodb://admin:123456@localhost:27017/admin

### 远程MongoDB客户端登录
mongo --host 10.10.10.10 --port 27017 -u "admin" -p "admin"
mongo --host 10.10.10.10 --port 27017 -u "admin" -p "admin" admin
mongo mongodb://admin:123456@10.10.10.10:27017/admin

(3)、使用admin超级管理员创建普通用户

[root@mongodb ~]# mongo --host 127.0.0.1 --port 27017 -u "admin" -p "admin"
### 创建dhg库
> use dhg
switched to db dhg
### 插入一个集合(表)
> db.t_test.insert({url:"www.baidu.com"})
WriteResult({ "nInserted" : 1 })
### 查看创建的集合(表)
> show collections
t_test
### 创建user01用户,指定可访问dhg数据库,并给予readWrite(读写)权限
db.createUser({
       user: "user01",
       pwd: "123456",
       roles: [ { role: "readWrite", db: "dhg" } ]
      })
### 授权账号,输入user01用户名和user01密码,按回车确认, 返回1表示认证成功
> db.auth('user01','123456')
1

### 本地MongoDB客户端登录
mongo --host 127.0.0.1 --port 27017 -u "user01" -p "123456" dhg
mongo mongodb://user01:123456@localhost:27017/dhg

### 远程MongoDB客户端登录
mongo --host 10.10.10.10 --port 27017 -u “user01" -p "123456" admin
mongo mongodb://user01:123456@10.10.10.10:27017/dhg

(4)、用户追加授权权限

###  (推荐使用) 方法二:
db.grantRolesToUser(
  "emuser",
  [
      { role: 'read', db: 'cad-conversion' },
      { role: 'read', db: 'classification' },
      { role: 'read', db: 'doc-management' }
  ]
)


###  方法一:使用updateUser会覆盖原来用户权限以及原来用户密码也会被覆盖,可以通过db.changeUserPassword修改用户的密码
db.updateUser( 
"emuser",
{ 
roles : [ 
      { role: 'read', db: 'cad-conversion' },
      { role: 'read', db: 'classification' },
      { role: 'read', db: 'doc-management' }
]
}
)

db.changeUserPassword('emuser',"abc123456")

(5)、修改用户密码

db.changeUserPassword('emuser',"abc123456")

(6)、用户管理操作

### 查看用户列表
db.system.users.find();

### 修改admin用户密码
db.changeUserPassword('admin','admin');

### 删除user01用户
db.system.users.remove({user:"user01"})



9、MongoDB逻辑备份与恢复


(1)、MongoDB逻辑备份

### 远程备份所有库(未压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -o /opt/

### 远程备份所有库(压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -o /opt/ --gzip

### 远程备份指定dhg02库(未压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -d dhg02 -o /opt/

### 远程备份指定dhg02库(压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -d dhg02 -o /opt/ --gzip

### 远程备份指定dhg02库中的t_test集合(未压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -d dhg02 -c t_test -o /opt/

### 远程备份指定dhg02库中的t_test集合(压缩备份)
mongodump --host 10.10.10.12 --port 27017 -u "admin" -p "admin"  --authenticationDatabase admin -d dhg02 -c t_test -o /opt/ --gzip

(2)、MongoDB逻辑恢复

### 远程恢复所有库(未压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" --authenticationDatabase admin --dir=/opt/

### 远程恢复所有库(压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" --authenticationDatabase admin --dir=/opt/ --gzip

### 当dhg02库不存在时,远程恢复dhg02库(未压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02  --authenticationDatabase admin --dir=/opt/dhg02/

### 当dhg02库不存在时,远程恢复dhg02库(压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02  --authenticationDatabase admin --dir=/opt/dhg02/ --gzip

### 当dhg02库已存在时,先删除dhg02库,再远程恢复dhg02库(未压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02 --drop  --authenticationDatabase admin --dir=/opt/dhg02/

### 当dhg02库已存在时,先删除dhg02库,再远程恢复dhg02库(压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02 --drop  --authenticationDatabase admin --dir=/opt/dhg02/ --gzip

### 远程恢复dhg02库中的t_test集合(未压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02  -c t_test --authenticationDatabase admin --dir=/opt/dhg02/t_test.bson 

### 远程恢复dhg02库中的t_test集合(压缩恢复)
mongorestore --host 10.10.10.12 --port 27017 -u "admin" -p "admin" -d dhg02  -c t_test --authenticationDatabase admin --dir=/opt/dhg02/t_test.bson.gz --gzip
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐