关于mongodb
目录
本次测试的宿机配置:Mint19/24G/1T
虚拟机配置:CentOS7.9/2G/2U/100G/Mongodb服务端安装在该机上
单数的 MongoDB 发行版本(如4.3)是开发版本,不适合生产部署
yum方式安装
[root@node1 ~]# vim /etc/yum.repos.d/mongodb-org-4.4.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
[root@node1 ~]# yum clean all && yum makecache
# 安装最新版
[root@node1 ~]# yum -y install mongodb-org
# 安装指定版本
[root@node1 ~]# yum -y install mongodb-org-4.4.8 mongodb-org-server-4.4.8 mongodb-org-shell-4.4.8 mongodb-org-mongos-4.4.8 mongodb-org-tools-4.4.8
默认MongoDB 使用mongod用户帐户运行并使用以下默认目录:
/var/lib/mongo (数据目录)
/var/log/mongodb (日志目录)
要使用默认目录以外的数据目录和/或日志目录
[root@node1 ~]# cp /etc/mongod.conf{,-bak}
[root@node1 ~]# vim /etc/mongod.conf
storage.dbPath=/some/data/directory 指定新的数据目录路径
systemLog.path=/some/log/directory/mongod.log 指定新的日志文件路径
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
[root@node1 ~]# chown -R mongod:mongod <directory>
Tips:
其他mongod.conf中的配置选项 https://docs.mongodb.com/v4.4/reference/configuration-options/#mongodb-setting-storage.journal.enabled
# 启动mongod
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl {start|stop|restart|status|enable} mongod
查看启动日志
[root@node1 ~]# tail -f /var/log/mongodb/mongod.log
## 开始使用MongoDB
1、在本机的shell上启动mongod
[root@node1 ~]# mongo
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
> use admin;
switched to db admin
> show tables;
system.version
> db.createUser({
user: 'admin', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})
> exit
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl restart mongod
登录
[root@node1 ~]# mongo 或者 mongo -uadmin -p123456 ===>未指定库
如为非默认端口上的本地 MongoDB 实例
[root@node1 ~]# mongo --port 28015
tarball方式安装
如果是通过下载 tarball 安装的则默认不创建这2个目录
[root@node1 ~]# mkdir -p /var/lib/{mongo,mongodb}
[root@node1 ~]# chown -R mongod:mongod /var/lib/*
4.4版本官方安装文档:https://docs.mongodb.com/v4.4/tutorial/install-mongodb-on-red-hat-tarball/
mongo可视化客户端-方式1(需要图形化界面)
https://nosqlbooster.com/downloads
AppImage 格式是一种打包应用程序的格式,允许它们在各种不同的目标系统(基础操作系统、发行版)上运行,而无需进一步修改。
AppImages 无需安装或无需 root 权限即可下载和运行。
[root@node1 ~]# chmod +x nosqlbooster4mongo-6.2.17.AppImage
[root@node1 ~]# ./nosqlbooster4mongo-6.2.17.AppImage
上图点击左下角的 Test Connection
上图点击右下角的Save或Save Connect
mongo可视化客户端-方式2(需要图形化界面)
官网下载地址:https://robomongo.org/download
Robo 3T 前身是 Robomongo,后被 3T 公司收购,是一款免费开源的 GUI 管理工具。支持 MongoDB 4.0+,轻量级 GUI,支持语法填充等等。适用于 Windows,macOS 和 Linux 系统。
远程主机上的 MongoDB 实例
[root@node1 ~]# mongo "mongodb://192.168.1.xxx:27017"
或者
[root@node1 ~]# mongo --host 192.168.1.xxx:27017
或者
[root@node1 ~]# mongo --host 192.168.1.xxx --port 27017
4、带有身份验证的 MongoDB 实例
[root@node1 ~]# mongo --username <username> --password <password> --authenticationDatabase <database> --host 192.168.1.xxx --port 27017
MongoDB提供的工具
这些工具提供了 MongoDB 在运维管理上的方便
工具 | 描述 |
---|---|
mongosniff | mongodb监测工具,作用类似于 tcpdump(如无则需自行安装) |
mongodump | MongoDB数据备份工具 |
mongoimport | Mongodb数据导入工具 |
mongoexport | Mongodb数据导出工具 |
bsondump | 将 bson 格式的文件转储为 json 格式的数据 |
mongoperf | (如无则需自行安装) |
mongorestore | MongoDB数据恢复工具 (如无则需自行安装) |
mongod.exe | MongoDB服务启动工具 |
mongostat | mongodb自带的状态检测工具 |
mongofiles | GridFS 管理工具,可实现二制文件的存取 |
mongooplog | (如无则需自行安装) |
mongotop | 跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数据 |
mongos | 分片路由,如果使用了 sharding 功能,则应用程序连接的是 mongos 而不是 mongod |
mongo | 客户端命令行工具,其实也是一个 js 解释器,支持 js 语法 |
其他分类
# 常用命令
[root@node1 ~]# mongo -uadmin -p123456
进入数据库
use opop 如有则进入,如无则新建并进入
show dbs 查看库
admin 0.000GB
config 0.000GB
local 0.000GB
opop 0.000GB
在opop库中创建表
db.test.insert({name:"zhangsan", age:18, length:180, lover:"keke"})
WriteResult({ "nInserted" : 1 }) # 正确回显
查看test表中的数据
db.test.find({})
或者
db.test.find({name: "zhangsan"})
或者按一定格式输出
db.test.find({name: "zhangsan"}).pretty() # 重点是.pretty()
查看当前库下的用户
show users
创建用户(在opop数据库创建lisi用户和设置用户密码,并给该用户admin数据库上readWrite的角色,角色部分见下述数据库默认角色部分)
注:在opop库内
db.createUser({
user: "lisi",
pwd: "123456",
roles:[{
role: "readWrite",
db: "admin"
}]
})
验证登陆
mongo -u lisi -p 123456 --authenticationDatabase opop
删除用户
use opop
db.dropUser('lisi')
修改用户密码
db.updateUser('admin', {pwd: '654321'})
密码认证
db.auth('admin', '123456')
db.collection.insertOne() #插入单个文档
db.collection.insertMany() #插入多个文档
db.collection.insert() #插入单条或多个文档
插入操作行为影响点:
1、自动创建不存在的集合、数据库,例如这里的inventory集合●
2、如果不指定,自动生成主键id及其值
3、写操作都是基于单个文档级别的原子操作
4、确认写操作级别,在分片集群中需要关注
# MongoDB 数据库默认角色
数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root