MongoDB基礎配置及權限配置
NoSQL
MongoDB
Web
Linux
長期以來,在Web項目開發中,我一直使用關係型數據庫Mysql
作爲數據倉庫,這也是大部分Web開發者在學習階段,或實際開發中最常用的數據庫。隨着近幾年大數據等新興概念的興起,NoSQL數據庫也日趨變的流行,MongoDB目前來說是其中應用比較廣泛的。
就目前純粹的個人使用感受來講,其最吸引我的就是其類JSON的數據結構,在開發中完全可以拋棄Mysql中需要的前期設計,並且在開發過程中,可以很快捷的改變早期數據結構,並對前期開發減少影響。當然,如此簡便的特性並不是說我們可以完全的不用考慮數據庫結構,作爲開發過程中最基礎的承載,數據庫設計的一些基本準則我還是需要遵守的。而且作爲新興數據庫體系,MongoDB也不是能應用於所有領域,所以,在其使用上還需要做一番斟酌,不過在我接觸的大多數的商業項目中,有70%在開發時採用MongoDB會取得較好效果。
Linux安裝
跟大多數Linux軟件一樣,MongoDB在基本安裝方式爲編譯安裝,並且針對各個系統版本有相應的簡易安裝包。具體細節可參考其官方網站,在這裏不做贅述。
MongoDB官網:https://www.mongodb.org
基本配置
MongoDb在初次安裝完成後,最好結合實際情況對齊基礎配置文件做一定配置,假如按照起默認的運行方式,在實際生產環境中,很難保證其穩定運行。一般
MongoDb默認的基礎配置文件在/etc/mongod.conf
。
一般最開始需要配置的爲bind_ip
,在這一點上MongoDb與Mysql有很大不同。Mysql的監聽IP默認與系統IP相同,所以一般不需單獨配置,只需配置用戶即可從外部用訪問。但是在MongoDb,假如你要以127.0.0.1做爲訪問地址的話,你的bind_ip必須也爲127.0.0.1,假如配置爲公網地址的話,你的數據庫用127.0.0.1會無法連接。
下面是以10.0.0.1作爲外網訪問地址,127.0.0.1作爲本機訪問地址的配置。
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip=10.0.0.1,127.0.0.1
剩餘如日誌文件位置、倉庫存儲文件路徑等按實際情況配置即可
用戶權限配置
在用戶權限分配上,MongoDB管理是相對比較寬鬆的。在其默認的安裝中,MongoDB是沒用用戶的,單純的作爲數據倉庫使用。也就是說Mongo在啓動後,任何指導服務器IP的人都可以鏈入數據庫,進行任何操作。想要對數據庫訪問進行權限限制,首先要在配置文件中開啓權限選項,開啓後在未完成用戶設置後不要重啓數據庫。
security:
authorization: enabled
setParameter:
authenticationMechanisms: MONGODB-CR,SCRAM-SHA-1
enableLocalhostAuthBypass: false
logLevel: 4
因爲MongoDB並不存在默認的管理員賬戶,所以配置文件更改完成重啓數據庫之前,我們需要進入數據庫增加admin管理員。因爲目前數據庫仍然是沒有用戶狀態,所以我們直接登入數據庫即可。
use admin;
//創建管理員用戶
db.createUser(
{
user: "admim",
pwd: "admin",
roles: [ "userAdminAnyDatabase" ]
}
)
在進行以上設置後,我們可以重啓MongoDB服務並登入數據庫,這時會發現,我們執行show dbs;
等操作均無法執行,這是因爲我們登錄是不需要認證的,但是要訪問具體數據庫,或者對數據做更改的時候,已經是沒有相關權限了,這時我就要爲需要訪問的數據庫添加權限。
use admin;
db.auth("admim","admim"); //登錄用戶admin
//MongoDB用戶是跟着數據庫走的,所以我們要先進入需要添加用戶的數據庫
use test;
//創建test數據庫讀寫用戶test
db.createUser(
{
user: "test",
pwd: "test",
roles: [
{ role: "readWrite", db: "test" }
]
}
)
db.auth("test","test"); //登錄test庫用戶test
現在我們就可以對test庫進行相關操作了。