MongoDB
前幾天記錄了一下基于 flask 的網(wǎng)站部署, 網(wǎng)站自然離不開數(shù)據(jù)庫, 對于小型網(wǎng)站來說 NoSql 更適合,所以今天就寫一下 MongoDB 的線上部署
默認(rèn)你已經(jīng)更新了所有的系統(tǒng)更新
系統(tǒng)環(huán)境依舊為 flask 所用的環(huán)境 Ubuntu 17.10
默認(rèn)讀者具有一定的 Linux 操作基礎(chǔ)以及數(shù)據(jù)庫相關(guān)常識
一、安裝 MongoDB
1.使用sudo apt-get install mongodb 即可,安裝完會自動運(yùn)行,
mongo 的默認(rèn)數(shù)據(jù)庫路徑為/data/db/ 可以通過--dbpath來指定自己的數(shù)據(jù)庫地址
2.可以通過/etc/init.d/mongo [option] 來控制 mongoDB 的運(yùn)行/停止, 以及查看狀態(tài)
3.默認(rèn) MongoDB 開啟自啟
二、配置 MongoDB 用戶
默認(rèn) mongo 只能使用本地鏈接,且無需用戶,自動使用所有權(quán)限,如果部署為線上環(huán)境需要更改一些配置.
- 1.配置用戶
# 鏈接 mongo
mongo
# 接下來創(chuàng)建數(shù)據(jù)庫用戶
> use admin
switched to db admin
> db.createUser(
... {
... user: "root",
... pwd: "root",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
# 會提示:
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
解釋一下??的字段
user:用戶名
pwd:密碼
roles:指定用戶的角色 roles的具體角色放在文章末尾 自行查看
- 2.配置數(shù)據(jù)庫
1.配置數(shù)據(jù)庫可遠(yuǎn)程連接
vi /etc/mongodb.conf
# 將 bind_ip 改為0.0.0.0 端口號可用默認(rèn),默認(rèn)為27017
# auth 開啟用戶驗證
bind_ip = 0.0.0.0
port = 27017
auth = true
#關(guān)閉編輯文件
# 使用/etc/init.d/mongodb restart 讓配置生效
2.遠(yuǎn)程連接數(shù)據(jù)庫
#這里是在你自己的電腦上進(jìn)行操作
# 使用終端鏈接數(shù)據(jù)庫
mongo --host ip #ip 為你的服務(wù)器 IP 地址,如果更改了默認(rèn)端口號,后面使用 :端口號 即可
#顯示數(shù)據(jù)庫
show dbs
#會發(fā)現(xiàn)有如下提示
2017-12-05T08:56:26.716+0000 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} :
#此刻證明你沒有權(quán)限
#接下來校驗用戶權(quán)限
use admin
db.auth('用戶名','密碼')
#如果mongo 返回值為1 證明校驗成功,反之為失敗
# 如果成功了,再次嘗試 show dbs
show dbs
# 會發(fā)現(xiàn)已經(jīng)可以正常顯示數(shù)據(jù)庫了
三、通過工具來鏈接數(shù)據(jù)庫
大家開發(fā)過程中一般都數(shù)據(jù)庫工具來進(jìn)行操作/查看.
mongo 也有很多優(yōu)秀的數(shù)據(jù)庫工具, 譬如說 studio 3T 等等
接下來記錄一下 工具鏈接需要校驗的數(shù)據(jù)庫需要注意的事項

一定要指明鏈接的數(shù)據(jù)庫是哪個.
到這里本筆記就告一段落, 下面為 roles 這個字段可選的值,僅供參考
Built-In Roles(內(nèi)置角色):
1. 數(shù)據(jù)庫用戶角色:read、readWrite;
2. 數(shù)據(jù)庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復(fù)角色:backup、restore;
5. 所有數(shù)據(jù)庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級用戶角色:root
// 這里還有幾個角色間接或直接提供了系統(tǒng)超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內(nèi)部角色:__system
具體角色(這些我并沒試過,了解一下,知道有這個就行了)
Read:允許用戶讀取指定數(shù)據(jù)庫
readWrite:允許用戶讀寫指定數(shù)據(jù)庫
dbAdmin:允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶
clusterAdmin:只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
readAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限
readWriteAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限
userAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限
dbAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。
root:只在admin數(shù)據(jù)庫中可用。超級賬號,超級權(quán)限