在ubuntu 18上安裝MongoDB

本文介紹 MongoDB Community EditionUbuntu 下的安裝和常見配置方法。文中操做基於 MongoDB Community Edition 4.2.2Ubuntu 18.04 。對於不一樣的系統和版本,操做方式和方法可能會有不一樣。html

基礎安裝

本節簡單講解在Ubuntu下 MongoDB 基本的安裝步驟。linux

  1. 安裝GPG公鑰
    wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
  2. 添加APT源
    echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
  3. 重載本地包數據庫
    sudo apt-get update
  4. 安裝mongoDB
    sudo apt-get install -y mongodb-org
  5. 檢查mongoDB包安裝信息
    apt list --installed mongodb*
    正常狀況下,能夠看到如下信息
    mongodb-org/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-mongos/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-server/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-shell/bionic,now 4.2.2 amd64 [installed]
    mongodb-org-tools/bionic,now 4.2.2 amd64 [installed]
  6. 啓動系統服務
    sudo systemctl enable mongod.service
    sudo systemctl start mongod.service
  7. 檢查服務狀態
    systemctl status -l mongod.service
    若是 mongod.service 的狀態不是 active(running) ,能夠根據 systemctl status 命令的輸出和日誌文件 /var/log/mongodb/mongod.log 來排查問題緣由。

客戶端鏈接

MongoDB 服務啓動成功後,能夠使用 MongoDB JavaScript Shell 客戶端來訪問數據庫了:mongodb

mongo --host 127.0.0.1 --port 27017

默認配置下,MongoDB 監聽本地localhost27017端口。此時,啓動 MongoDB JavaScript Shell 時也能夠省略地址和端口參數。鏈接成功後就能夠操做數據庫了。好比查看現有的database:shell

> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB

安裝操做詳解

接下來會對安裝過程作進一步講解,基於這部份內容,能夠對 MongoDB 的安裝和基本配置進行部分自定義。數據庫

安裝指定組件和版本

在一節內容中,能夠看到當 MongoDB 的包安裝完成後,能夠看到多個組件被安裝。這些組件分別是ubuntu

包名 描述
mongodb-org 包含全部組件包的元包,安裝此包會包含如下全部組件
mongodb-org-server MongoDB 服務器,主要是 mongod 進程程序和相關資源和腳本
mongodb-org-mongos mongos 進程,用於在 MongoDB 分片集羣中將客戶端請求分發到各服務節點
mongodb-org-shell MongoDB JavaScript Shell 客戶端
mongodb-org-tools 其餘 MongoDB 工具, mongoimport, bsondump, mongodump, mongoexport,mongofiles,mongorestore,mongostat,和mongotop

能夠根據須要安裝指定的組件,好比只安裝 MongoDB JavaScript Shell 來訪問遠程服務:服務器

sudo apt install mongodb-org-shell

系統服務配置

MongoDB 服務安裝完成後,會建立系統服務文件 /lib/systemd/system/mongod.service。能夠根據須要修改此文件。app

好比,服務文件裏包含如下一些配置:ionic

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --config /etc/mongod.conf

UserGroup指定了啓動 MongoDB 服務進程所使用的用戶mongodb和同名用戶組mongodb。這個用戶和用戶組是在安裝 MongoDB 時自動建立的。能夠在必要時指定爲指望的值。當修改後,要注意同時修改相關目錄和文件的權限。ide

ExecStart指定了啓動服務進程的命令,能夠看到這裏顯示指定了使用配置文件/etc/mongod.conf。能夠修改這條配置項讓數據庫使用其餘配置文件,也能夠添加其餘啓動參數。

若是但願在同一臺服務器上啓動多個 MongoDB 服務,能夠複製服務文件,並修改後啓用。

若是是在啓用服務以後對服務文件作了修改,須要重載配置再重啓服務:

sudo systemctl daemon-reload
sudo systemctl restart mongod.service

基礎配置

本節介紹一些 MongoDB 配置文件中經常使用的配置項。默認狀況下,這些配置保存在文件/etc/mongod.conf中。當配置項修改後,須要重啓服務才能生效。

指定監聽地址和端口

默認狀況下,非分片集羣下的 MongoDB 監聽 localhost 上的 27017端口。在沒有顯示指定配置文件時,這個是由配置文件中的 net.portnet.bindIp配置頂控制:

# network interfaces
net:
    port: 27017
    bindIp: 127.0.0.1

這時, MongoDB 只接受來自於同一臺服務器上的本地鏈接,因此一般都會須要修改監聽的地址。好比但願監聽全部的IPv4地址,就能夠將 net.bindIp 項的值由 127.0.0.1 修改成 0.0.0.0。若是須要調整監聽的端口,則將 net.port 配置頂的值由 27017 修改成指望值。

修改數據存儲

MongoDB 的數據存儲目錄是由配置文件中的 storage.dbPath 配置項來控制的。默認狀況下數據保存在 /var/lib/mongodb 目錄下:

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

能夠根據本身的須要修改數據目錄。在修改以前要確保目錄已經存在,而且權限設置正確。目錄的全部者應當爲 mongodb:mongodb,或者啓動進程的用戶有讀寫權限。

若是數據庫以前已經有數據了,須要把以前數據目錄下的文件都複製到新目錄下,不然 MongoDB 會新建空的數據文件結構。

修改日誌配置

默認狀況下 MongoDB 日誌記錄在文件 /var/log/mongodb/mongod.log 中。這個是由 systemLog 相關配置項決定的:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

若是要修改日誌文件位置,就根據須要修改 systemLog.path 配置項的值。不過要注意日誌文件所在目錄的權限。運行 MongoDB 進程的用戶須要有日誌目錄的讀寫權限。默認狀況下使用的用戶是 mongodb:mongodb

若是但願日誌文件能夠輪轉(log rotate),則須要添加配項 systemLog.logRotate:

# where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      logRotate: true
      path: /var/log/mongodb/mongod.log

訪問控制

默認配置下,MongoDB 是沒有開啓訪問控制的。此時,用戶訪問數據庫不須要作驗證,而且擁有全部的權限。因此在安裝完成後,應當馬上開啓數據庫的訪問控制。

  1. 鏈接到本地數據庫後,在客戶端執行如下命令
    use admin
    db.createUser(
      {
        user: "admin",
        pwd: passwordPrompt(),
        roles: [
          { role: "userAdminAnyDatabase", db: "admin" },
          "readWriteAnyDatabase"
        ]
      }
    )
    此命令用在 admin 數據庫下建立一個名爲 admin 的帳號。createUser方法參數JSON中的 pwd 字段用來指定帳號的密碼。這裏指定的是另外一個方法 passwordPrompt。這個方法在執行createUser命令時,會提示並等待用戶在客戶端輸入密碼。roles指定用戶的角色和權限。這裏給 admin 受權的第一個權限是 admin 數據庫的管理權限。admin數據庫是 MongoDB 用來管理用戶的,因此有了這個權限,就能夠用來管理數據庫的其餘帳號了。第二個權限 readWriteAnyDatabase 是對全部數據庫的讀寫權限。
  2. 在Ubuntu終端中關閉 MongoDB 服務:
    sudo systemctl stop mongod.service
  3. 在配置文件將security.authorization配置頂設置爲true來開啓訪問控制:
    security:
      authorization: enabled
  4. 啓動 MongoDB 服務來使配置生效:
    sudo systemctl start mongod.service
  5. 使用admin登陸
    mongo -u admin -p
  6. 給應用數據庫建立帳號,好比app_db下建立帳號app_admin:
    use app_db
    db.createUser(
      {
        user: "app_admin",
        pwd: passwordPrompt(),
        roles: [ "readWrite" ]
      }
    )

這裏建立的帳號是有app_db下的讀寫權限readWrite的。若是想建立只讀帳號,則須要指定權限爲read

  1. 使用普通帳號登陸
    mongo --authenticationDatabase app_db -u app_admin -p
    和以前使用admin帳號登陸不一樣,這裏指定了authenticationDatabase參數值爲app_db,由於app_admin是在app_db下建立的帳號。

參考資料

原文出處:https://www.cnblogs.com/mithrilon/p/12056301.html

相關文章
相關標籤/搜索