>pip install pymongo
## Windows环境
>使用360软件管家安装`微软常用运行库集合`
- 解压到d盘
- 新建data与log文件夹
- 启动
>D:\db\mongodb\bin\mongod.exe --dbpath D:\db\mongodb\data --logpath=D:\db\mongodb\log\mongodb.log --logappend
## Linux环境 centos
- 下载
>curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz
- 解压
>tar -zxvf mongodb-linux-x86_64-4.0.4.tgz
- 移动并重命名
>mv mongodb-linux-x86_64-4.0.4 /usr/local/mongodb
- 新建data和logs两个目录,用来存放数据和日志
```
cd /usr/local/mongodb/
mkdir data
mkdir logs
```
- 新建vi mongodb.conf
```
dbpath = /usr/local/mongodb/data/
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
#远程连接
bind_ip=0.0.0.0
#端口
port = 27017
#以守护线程的方式启用,即在后台运行
fork = true
#日志输出方式,使用追加的方式写日志
logappend = true
#PID File 的完整路径,如果没有设置,则没有PID文件
pidfilepath = /usr/local/mongodb/mongo.pid
#关闭http接口,默认关闭27018端口访问
#nohttpinterface = true
#声明这是一个集群的分片,默认端口是27018
#shardsvr = true
#设置每个数据库将被保存在一个单独的目录
#directoryperdb = true
#开启认证
auth = true
#设开启简单的rest API,置后打开28017网页端口
#rest = true
```
- 放行27017端口
>firewall-cmd --zone=public --add-port=27017/tcp --permanent
>firewall-cmd --reload
### MongoDB命令行
>/usr/local/mongodb/bin/mongo
```
# 查看版本
db.version()
# 关闭服务需要进入到admin数据库
use admin
db.shutdownServer()
# 查看所有数据库
show dbs
```
### MongoDB用户权限控制
- Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
```
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
```
- 新建一个授权账号用来管理用户
>use admin
>db.createUser( { user: "dba", pwd: "dba", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
- 验证:需要开启auth参数。
```
#验证,因为在admin下面添加的帐号,所以要到admin下面验证。
use admin
db.auth('dba','dba')
#创建数据库及读写帐号
use mydb
db.createUser( { user: "lss", pwd: "lss", roles: [ { role: "readWrite", db: "mydb" } ] } )
#查看所有用户
use admin
db.system.users.find().pretty()
#统计用户数
db.system.users.find().count()
# 删除用户
db.system.users.remove({user:"root"})
```
## 流程
```
# 新建超级管理员用户(root)
use admin
db.createUser({user:'root', pwd:'jzl@admin', roles:[{ role: "root", db: "admin" }]})
db.auth('root','jzl@admin')
# 关闭数据
db.shutdownServer()
exit
# 打开config文件,开启auth = true
权限认证
# 启动服务器
/usr/local/mongodb/bin/mongod -config mongodb.conf
# 使用管理员账号登录
/usr/local/mongodb/bin/mongo
use admin
db.auth('root','jzl@admin')
# 管理员是没有权限访问普通数据库,需要我们建一个普通用户来访问普通数据库
use ota720u
db.createUser({user:"ota",pwd:"jzl@2018",roles:[{role:"readWrite",db:"ota720u"}]})
db.auth('ota','jzl@2018')
exit
```
## mongodb 备份 还原 导出 导入
- mongodump备份数据库
1. 常用命令格
>mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
如果没有用户,可以去掉-u和-p。
如果导出本机的数据库,可以去掉-h。
如果是默认端口,可以去掉--port。
如果想导出所有数据库,可以去掉-d。
2. 导出所有数据库
>mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/
3. 导出指定数据库
>mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/
- mongorestore还原数据库
1. 常用命令格式
>mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
`--drop的意思是,先删除所有的记录,然后恢复。`
2. 恢复所有数据库到mongodb中
>mongorestore /home/zhangy/mongodb/ #这里的路径是所有库的备份路径
3. 还原指定的数据库
>mongorestore -d tank /home/zhangy/mongodb/tank/ #tank这个数据库的备份路径
>mongorestore -d tank_new /home/zhangy/mongodb/tank/ #将tank还原到tank_new数据库中
`这二个命令,可以实现数据库的备份与还原,文件格式是json和bson的。无法指写到表备份或者还原。`
- mongoexport导出表,或者表中部分字段
1. 常用命令格式
>mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名
` -f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
`
`-q 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据
`
`--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点`
2. 导出整张表
>mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat
3. 导出表中部分字段
>mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv
4. 根据条件导出数据
>mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json
- mongoimport导入表,或者表中部分字段
1. 常用命令格式
- 还原整表导出的非csv文件
>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
`重点说一下--upsert,其他参数上面的命令已有提到,--upsert 插入或者更新现有数据`
- 还原部分字段的导出文件
>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名
- 还原导出的csv文件
>mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名
2. 还原导出的表数据
>mongoimport -d tank -c users --upsert tank/users.dat
3. 部分字段的表数据导入
>mongoimport -d tank -c users --upsertFields uid,name,sex tank/users.dat
4. 还原csv文件
>mongoimport -d tank -c users --type csv --headerline --file tank/users.csv
- 工欲善其事必先利其器
- 请求库
- 解析库
- 数据库
- 存储库
- Web库
- app爬取相关库
- 爬虫框架
- 部署相关库
- ipython
- 基础
- 数学函数
- 随机函数
- 三角函数
- 字符串内建函数
- 列表方法
- 字典内置方法
- 正则表达式
- os
- 字符串及数字的判断
- 常用魔术方法
- db
- mongodb
- mysql
- redis
- ORM
- ODM
- mongodb操作方法
- sqlite3
- access
- files
- Excel
- xml文件
- Python环境
- anaconda
- pip常用命令
- virtualenv
- pyenv
- cmder
- 远程开发
- Jupyter
- crawler
- appium环境搭建
- adb工具
- uiautomator
- 运行Appium+Python Clinet + 夜神模拟器
- DesiredCapabilities参数大全
- requests
- scrapy
- gerapy
- scrapyd
- 请求头fake_useragent库
- 数据传递过程
- 数据清洗及入库pipelines.py
- scrapy调用阿布云代理
- 图片下载
- PyQt5
- pyinstaller
- 攻防
- xss
- xss反射
- Chrome模拟微信浏览器
- flask
- 注册app
- 蓝图Blueprint
- 表单验证wtforms
- Flask-SQLAlchemy
- 数据处理
- json
- tornado
- settings
- 工具
- fiddler
- ab压力测试工具
- 高阶
- 队列
- 多线程
- 消息队列
- 定时任务框架APScheduler
- Django
- 路由分离
- 模型
- admin
- Android
- apk逆向工程