MongoDB 的線上部署

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ù)庫名字

一定要指明鏈接的數(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)限

參考

jyzhou的博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容