MongoDB安装部署

一、简介

MongoDB是一个介于关系数据库和非关系数据库之间的文档数据库,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是 json二进制化 的 Bson对象,因此可以存储比较复杂的数据类型。
这里写图片描述

二、特点

Mongo内部执行引擎为JS解释器,把文档存储成Bson结构,转换为JS对象,并可以通过熟悉的JS语法来操作。
Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

三、MongoDB和传统数据库对比

传统数据库:
结构化数据,定好了表结构,每一行的内容,必须符合表结构,就是说----列的个数、类型都是一样的


MongoDB:
表下面的每篇文档都可以有自己独特的结构(Json对象都可以有自己独特的属性和值)

四、安装
官网地址:https://www.mongodb.com/
下载地址:https://www.mongodb.com/download-center?jmp=nav#community    #建议下载stable版本
下载命令:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.4.tgz 
备注:直接解压就可以用的

这里写图片描述

核心:
mongod   服务器端
mongos   查询路由器(集群分片时用)
mongo    客户端

二进制导出导入:
mongodump     数据库整体导出bson数据(适合做备份)
mongorestore  数据库整体导入bson
bsondump      bson转换为json


数据导出导入:
mongoexport   导出json,csv,tsv格式(只是导出数据,适合于和其他数据库交互用)
mongoimport   导入json,csv,tsv(只是数据导入)

诊断工具:
mongostats
mongotop
mongosniff  用来检查mongo运行状态
五、启动
$ mkdir /mongo/{data,logs} -p  #创建数据目录和日志目录
$ mv /usr/local/src/mongodb-linux-x86_64-3.2.19 /usr/local/mongodb
$ /usr/local/mongodb/bin/mongod --dbpath /mongo/data/ --logpath /mongo/logs/test.log --fork --port 27017 --bind_ip 0.0.0.0 [--smallfiles]
about to fork child process, waiting until server is ready for connections.
forked process: 1628
child process started successfully, parent exiting
$ ps -ef | grep mongo
root       1628      1  3 13:45 ?        00:00:00 /usr/local/mongodb/bin/mongod --dbpath /mongo/data/ --logpath /mongo/logs/test.log --fork --port 27017
root       1648   1428  0 13:46 pts/0    00:00:00 grep --color=auto mongo

#连接数据库
$ /usr/local/mongodb/bin/mongo

参数说明:
--dppath   数据库存储目录
--logpath  日志运行目录
--port     端口,默认时27017,可以不用写
--fork     后台运行
--bind_ip 绑定的ip地址,默认是127.0.0.1

这里写图片描述
也可以将配置写入文件中,启动的时候指定配置文件

手动创建:/etc/mongod.conf
logpath=/mongo/logs/test.log # log路径
logappend=true               # 追加方式写入log
dbpath=/mongo/data/          # 数据库路径
fork = true                  # 守护进程
port = 27017                 # 端口
noauth = true                # 不进行安全验证
#auth = true                 # 进行安全验证
bind_ip = 0.0.0.0            # 绑定ip
smallfiles = true            
profile = 1                  #收集慢查询数据,1--开启,0--关闭,2--收集所有数据,不加默认为0
slowms = 200                 #超过200毫秒语句为慢sql,默认为100

#启动
$ /usr/local/mongodb/bin/mongod --config /etc/mongod.conf

#远程连接
mongo ip:port

备注:
mongdb是比较耗费内存和磁盘空间(一般占3-4G)的,如果虚拟机测试,在启动的时候可以加上 --smallfiles 参数。

六、mongo开启用户名密码验证

1、mongod启动时指定 –auth 参数

$ /usr/local/mongodb/bin/mongod --dbpath /mongo/data/ --logpath /mongo/logs/test.log --fork --port 27017 --bind_ip 0.0.0.0 --smallfiles --auth

2、登陆到mongo中,设置密码和权限

> use admin
> db.createUser({
  "user" : "user",
  "pwd" : "password",
  "roles" : [{"role" : "dbAdmin","db" : "admin"},
  {"role" : "dbOwner","db" : "admin"}, 
  {"role" : "read","db" : "admin"}, 
  {"role" : "readWrite","db" : "admin"}, 
  {"role" : "userAdmin","db" : "admin"}, 
  {"role" : "root","db" : "admin"}]
})

#设置普通数据库权限
> use test
> db.createUser({
  "user" : "user",
  "pwd" : "password",
  "roles" : [{"role" : "dbAdmin","db" : "test"},
  {"role" : "dbOwner","db" : "test"}, 
  {"role" : "read","db" : "test"}, 
  {"role" : "readWrite","db" : "test"}, 
  {"role" : "userAdmin","db" : "test"}, 
  {"role" : "root","db" : "test"}]
})

3、role 类型

数据库用户角色(Database User Roles)
read:授予User只读数据的权限
readWrite:授予User读写数据的权限


数据库管理角色(Database Administration Roles):
dbAdmin:在当前dB中执行管理操作
dbOwner:在当前DB中执行任意操作
userAdmin:在当前DB中管理User


备份和还原角色(Backup and Restoration Roles):
backup
restore


跨库角色(All-Database Roles):
readAnyDatabase:授予在所有数据库上读取数据的权限
readWriteAnyDatabase:授予在所有数据库上读写数据的权限
userAdminAnyDatabase:授予在所有数据库上管理User的权限
dbAdminAnyDatabase:授予管理所有数据库的权限


集群管理角色(Cluster Administration Roles):
clusterAdmin:授予管理集群的最高权限
clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
hostManager:管理Server

4、连接

mongo -u user -p password --host host_ip dbname
mongo mongodb://user:password@host_ip/dbname

5、删除用户

> use admin
> db.dropUser("user")

> use test
> db.dropUser("user")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值