MongoDB加auth權限

目錄

吹個牛B,本身的MongoDB裸奔了快半年,從未遭受黑客攻擊。也不知道是本身運氣好,仍是黑客對個人乞丐版服務器看不上眼。不過既然知道了數據庫裸奔的危險性,就要給它上把鎖。然而上鎖對我這種刻意迴避數據庫知識的人來講,也實在不是一件容易的事。html

在學習上鎖的過程當中,看了好些文章。爲了防止你們看我這篇沒懂後還有的看,先給出參考文檔:node

一句話,沒有密碼的數據庫,並且又沒有改27017這個MongoDB默認端口號,別人一個命令就能夠連上去:mongodb

這篇文章也給出了關於MongoDB安全性的詳細說明shell

固然你可能說,他怎麼知道我用的什麼數據庫,而後猜到個人端口。我在這裏只能說,咱們要相信黑客的技術😂。
數據庫

mongoDB修改默認端口號

在設置權限以前,咱們要首先改掉默認端口號,這是防止被攻擊的第一步。安全

修改默認端口號可分爲兩步,第一步,關掉MongoDB;第二步,用新的端口號啓動MongoDB
服務器

關閉MongoDB

關閉MongoDB也有兩種方式,第一是藉助mongo shell,使用db.shutdownServer(),第二是直接殺進程。學習

shutdownServer的使用方法以下:ui

固然,我更喜歡另一種簡單粗暴的方式:kill
url

重啓MongoDB

重啓MongoDB也有兩種方式:命令行參數啓動 和 加載配置文件啓動。二者的惟一區別就是後面的方法將配置參數放到了一個配置文件之中。兩種方法中,咱們要作的都是改掉默認端口號,先來看第一種方式:

這裏講一下 --fork 的意思,若是不帶這個參數,MongoDB的日誌會在前臺運行,日誌會直接打印到shell裏面。帶上這個參數則會將MongoDB轉到後臺運行,同時將運行日誌寫到logpath裏面,而不是直接打印到命令行。

設置密碼

接下來,講到設置密碼的關鍵環節了,沒有密碼,只改變端口,就好像把門從朝東改爲了朝南,卻仍是沒有上鎖。因此再加上密碼這一步纔算安全。在設置MongoDB的密碼前,咱們要知道如下幾點:

  1. 每一個數據庫之間的密碼是獨立的。
  2. 數據庫權限是分角色的。

這裏不講每一個角色(role)有哪些權限,更多角色相關的內容能夠參考官方文檔build-in roles。下面設置密碼的步驟主要參考MongoDB官方文檔:https://docs.mongodb.com/manual/tutorial/enable-authentication/

第一步:開啓MongoDB服務

第二步:進入MongoDB shell,相似於node.js的node命令

第三步:進入admin數據庫,以 userAdminAnyDatabase 的角色建立admin帳號,這個帳號建立後,能夠爲任何數據庫建立用戶

建立完成後推出mongo shell。

第四步:加入受權重啓MongoDB,方法上面介紹過了,可是要加上受權參數--auth

第五步:使用--auth啓動後,登陸mongo shell就須要輸入密碼了,能夠將帳號密碼放在一條命令中,也能夠先進入shell,再輸入帳號密碼鑑權,分別對應以下兩條語句:

或者先登陸再使用auth受權

第六步:你登陸 admin 數據庫後,就能夠爲別的業務數據庫建立帳號密碼了,好比爲 test 和 reporting數據庫建立帳號密碼:

第七步:推出shell後,如今能夠用新建立的帳號密碼登陸test數據庫了:

若是你用moogoose登陸,那你的url應該改爲以下格式:

本文完

相關文章
相關標籤/搜索