實戰 | MongoDB的安裝配置

 

安裝

  1. 下載MongoDB社區版
    https://www.mongodb.com/try/download/community

  2. 上傳至指定目錄,如: /app/soft

  3. 解壓文件
    tar -zxvf mongodb-linux-x86_64-rhel62-4.4.4.tgz

  4. 修改名字
    mv mongodb-linux-x86_64-rhel62-4.4.4 MongoDB

  5. 在MongoDB目錄下創建數據目錄及日誌目錄

[root@oadev soft]# cd MongoDB/
[root@oadev MongoDB]# mkdir -p ./data/db
[root@oadev MongoDB]# mkdir ./log

 

  1. 在安裝目錄創建MongoDB配置文件 vi mongodb.conf,內容如下:

systemLog:
  #MongoDB發送所有日誌輸出的目標指定爲文件
  destination: file
  path: "/app/soft/MongoDB/log/mongodb.log"
  logAppend: true
storage:
  #mongod實例存儲其數據的目錄
  dbPath: "/app/soft/MongoDB/data/db"
  journal:
    #啓用或禁用持久性日誌以確保數據文件保持有效和可恢復。 
    enabled: true
processManagement: 
   #啓用在後臺運行mongos或mongod進程的守護進程模式。 
   fork: true
net:
   #服務實例綁定的IP,默認是localhost 
   bindIp: 0.0.0.0
   port: 27017
配置文件如果內容不正確會導致mongodb服務起不起來,mongodb的配置文件要求k:v這種形式的:後面必須接空格並且文件中不能有tab縮進,必須是空格縮進
  1. 啓動MongoDB 進入bin目錄,執行以下命令
    ./mongod -f /app/soft/MongoDB/mongodb.conf

  2. 查看啓動結果
    使用命令 ps aux | grep mongod 驗證是否正常啓動
    或者在bin目錄下執行 ./mongo進入命令行界面

  3. 將mongdb添加進環境變量
    使用命令編輯配置文件 vim /etc/profile,在最後加入MongoDB的配置 export PATH=$PATH:/app/soft/MongoDB/bin
    這樣在任何地方都可以通過mongo指令進入命令行界面了。

安全配置

通過上面的安裝MongoDB目前還處於裸奔狀態,我們必須給其配置上用戶密碼認證登錄。首先我們給MongoDB配置一個超級管理員,操作步驟如下:

配置超級管理員

  1. 創建管理員賬號 在任意目錄中輸入mongo進入命令行界面(之前已經添加過環境變量)

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"xxxxxx",roles:[{role:"root",db:"admin"}]})

用戶添加成功會出現:Successfully added user和添加的用戶信息。
user : "用戶名",
pwd : "密碼”,
roles:指定用戶的角色,可以用一個空數組給新用戶設定空角色;在roles字段,可以指定內置角色和用戶定義的角色。
注意一點,帳號是跟着庫走的,所以在指定庫裏授權,必須也在指定庫裏驗證(auth)。

2. 開啓權限認證
退出mongodb命令行並修改配置文件mongodb.conf,在最後開啓權限認證

security:
  authorization: enabled
  1. 重啓MongoDB,使權限認證生效

  2. 重新進入mongo命令行,此時可以正常進入,但是不能執行mongo命令,如執行 show dbs沒有任何信息

  3. 使用賬號密碼登錄

> use admin
switched to db admin
> db.auth("root","xxxxxx")

或直接使用下面命令登錄

mongo admin -u root -p xxxxxx

添加數據庫用戶

我們除了需要設置數據庫的超級管理員以外,還可以給每個數據庫設置單獨的管理員。其只有操作單獨數據的一定權限。

> use accesslog
switched to db accesslog
> db.createUser({
   user: 'accesslog',  //用戶名
   pwd'xxxxxx',  //密碼
   roles:[{
     role: 'readWrite', //角色
     db: 'accesslog'    //數據庫
   }]
 })

權限相關命令

show users  // 查看當前庫下的用戶

db.dropUser('accesslog')  // 刪除用戶

db.updateUser('admin', {pwd'xxxxxx'})  // 修改用戶密碼

db.auth('admin''xxxxxx')  // 密碼認證

MongoDB 數據庫默認角色

  1. 數據庫用戶角色: read、readWrite

  2. 數據庫管理角色: dbAdmin、dbOwner、userAdmin

  3. 集羣管理角色(admin): clusterAdmin、clusterManager、clusterMonitor、hostManager

  4. 備份恢復角色(admin): backup、restore

  5. 所有數據庫角色(admin): readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase

  6. 超級用戶角色(admin): root

客戶端連接

這裏我們使用 Navicat Premium 15 作爲MongoDB客戶端工具,當然也可以使用其他的。

 

在驗證模式中選擇Password選項後出現用戶名密碼輸入框。

連接上後由於沒有集合數據,所以此時看不到集合內容,這裏我們先新建一個查詢並通過如下語句創建一條記錄

use accesslog;
db.gatelog.insert({
    title: 'Hello,MongoDB',   
    by: 'JAVA日知錄',
    url: 'http://www.javadaily.cn',
    webchat: 'jianzh5'
});

執行完成後就能看到數據了。

 

以上,希望對你有所幫助!

 

 

本文分享自微信公衆號 - JAVA日知錄(javadaily)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章