关于mongodb


本次测试的宿机配置:Mint19/24G/1T
虚拟机配置:CentOS7.9/2G/2U/100G/Mongodb服务端安装在该机上

单数的 MongoDB 发行版本(如4.3)是开发版本,不适合生产部署

参考1
参考2

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

原文地址:https://www.cnblogs.com/smlile-you-me/p/15239778.html