>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逆向工程