MongoDB 安装部署(4.4.18版本)
·
记得关注一下博主,博主每天都会更新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
更多推荐

所有评论(0)