目录
一、MongoDB简介
1、概念理解
2、yum安装部署
3、二进制安装部署
4、配置文件解析
二、MongoDB基本管理
1、登录操作
2、管理命令
3、用户管理
一、MongoDB简介
1、概念理解
关系型数据库(RDBMS:Relational Database Management System)
MySql、Oracle、DB2、SQL Server…关系型数据库中全都是表
非关系型数据库(No Sql --Not only sql)(Sql:结构化查询语言)
MongoDB(文档数据库,json格式)、Redis…键值对数据库Mongodb逻辑结构 MySQL逻辑结构库database ====== 库集合(collection) ====== 表文档(document) ====== 数据行
2、yum安装部署
vim /etc/yum.repo.d/mongodb.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
#添加mongodb的yum源
yum install -y mongodf-org
#直接yum安装
systemctl start mongod
#启动mongod服务
mongo
#本地直接登录mongodb数据库
3、二进制安装部署
useradd mongod
passwd mongod
#创建用户
mkdir -p /data
mkdir -p /mongodb/conf
mkdir -p /mongodb/log
mkdir -p /mongodb/data
#创建MongoDB需要的目录
cd /data
tar xf mongodb-linux-x86_64-rhel70-3.6.12.tgz
cp -r /data/mongodb-linux-x86_64-rhel70-3.6.12/bin/ /mongodb
#上传压缩包并解压到指定目录,安装包官网下载网址:https://www.mongodb.com/
chown -R mongod:mongod /mongodb
#配置目录权限给mongod用户
su - mongod
vi .bash_profile
export PATH=/mongodb/bin:$PATH
source .bash_profile
#登录mongod用户配置环境变量
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork
#启动mongod服务并指定log文件和端口等
mongo
#本地直接登录mongodb数据库
4、配置文件解析
yum配置文件位置:/etc/mongod.conf
vim /etc/mongd.conf
①第一个模块
systemLog:destination: filelogAppend: truepath: /var/log/mongodb/mongod.log
#管理系统日志存储是否开启及存储方式和存储位置
②第二个模块
storage:dbPath: /var/lib/mongojournal:enabled: true
#管理系统数据存储位置及是否启用日志
③第三个模块
processManagement:fork: true # fork and run in backgroundpidFilePath: /var/run/mongodb/mongod.pid # location of pidfiletimeZoneInfo: /usr/share/zoneinfo
#管理进程运行方式前台/后台运行,pid存储位置以及时区信息
④第四个模块
net:port: 27017bindIp: 0.0.0.0
#管理网络的监听端口和监听地址
⑤第五个模块
security:authorization: enabled
#安全模块管理是否开启安全认证,开启后需要验证账户密码和验证库,否则无进入无操作权限
二、MongoDB基本管理
1、登录操作
mongo
#直接本地用户登录
mongo -uroot -proot123 192.168.30.17/admin
#root用户远程登录mongodb,-u指定用户,-p指定密码 192.168.30.17mongodb的地址,admin为验证库(远程登录用户不指定验证库即使登录成功也无法进行操作)
2、管理命令
①库级别命令操作
db.help()
#查看库帮助,help()可以理解为函数操作时可以像命令一下使用tab补全
use test(库名)
#进入test库如果没有此库则自动创建,注意若库中无集合则切换到其他库后会自动删除此库
show databases
show dbs
#查看有哪些库
db.createCollection("集合名")
#表中创建集合
②表(集合)级别命令操作
db.集合.help()
#查看集合帮助,help()可以理解为函数操作时可以像命令一下使用tab补全
show tables
#查看库中有哪些集合
db.集合.insert({键1:"值1",键2:"值2",等...})
#集合中添加数据,如果没有此集合则自动创建此集合并将文档写入集合中,json格式
db.集合.find({})
#查看集合中的内容,可以在({})中写筛选条件例如db.log1.find({id:"2"})查看log1集合中的id为2的文档
DBQuery.shellBatchSize=数量;
#db.集合.find({})默认是20行文档为1页,输入it则看下一页内容。此函数可以调整每页显示的数量如数量除配置50则没页显示50行文档输入it则看下一页内容
db.集合.find({}).pretty()
#加.pretty()可以更完美的展示,以json文档格式显示出集合中的数据
db.集合.findOne({})
#只查看集合的第一行文档
db.集合.count({})
#统计集合中有多少行文档,会输出一个值则为文档数
db.集合.remove({})
#删除集合中所有文档但不删除集合,可以({})中写筛选条件例如db.log1.remove({id:"1"})删除log1集合中id为1的文档
db.集合.drop()
#删除整个集合包括其中的文档
db.旧集合名.renameCollection("新集合名")
#修改集合名称
③系统命令级别
db
#查看当前处于那个库
db.集合.stats()
#查看集合存储信息
db.集合.dataSize()
#查看集合中数据的原始大小
db.集合.totalIndexSize()
#查看集合中索引数据的原始大小
3、用户管理
验证库:MongoDB的特殊安全验证,开启后远程登录除了输入账户密码外还需要在远程登录的ip后跟上验证库否则无法对库进行正常操作。
用户权限:必须use到某个库创建用户,一般管理那个库就use到哪个库创建用户,管理员用户除外(一般管理员用户在admin库创建)。权限分配角色管理,一共三种包括管理员(root)、只读(read)、可读可写(readWrite)
①创建管理员用户
use admin
#进入验证库,管理员用户的验证库一般为admin库
db.createUser(
{user:"test01",pwd:"test123",roles:[ {role:"root",db:"admin"}]
}
)
#创建一个test01的系统用户,密码为test123,角色权限为root管理员,管理库为admin
#若创建其他普通用户则进入所管理的库作为验证库,分配权限时给read只读或readWrite
②创建一个普通用户管理多个库并对多个库拥有不通权限
use test02
#建议以权限更高的管理库为验证库,以其他库为验证库也可
db.createUser(
{user:"test02",pwd:"test123",roles:[{role:"readWrite",db:"test02"},{role:"read",db:"test01"}]
}
)
#创建普通用户test02对test02库有可读可写权限,test01库只有可读权限
db.dropUser("用户名")
#删除用户,注意要在对应的验证库中删除用户
use admin
show tables
db.s