1. 程式人生 > >MongoDB(一)環境搭建與初始配置

MongoDB(一)環境搭建與初始配置

dba 註意 管理員 開機自啟動 拓展 width 間接 face 環境搭建

前言

  最近的項目中需要用到MongoDB,所這段時間需要學習知道怎麽去使用這個數據庫。

  這裏我先簡單的介紹一下什麽是MongoDB,後面還會詳細的介紹:

    MongoDB 是一個面向文檔的通用型數據庫,擁有 MySQL 等關系型數據庫常用功能。除了能夠創建、讀取、更新和刪除數據之外,也還提供了一些拓展的功能,

    如索引、聚合、特殊的集合類型(如時間有限的集合)、分片和集群,是一個易於使用、便於拓展的數據庫。也正因為它的這些特性,也是前端童鞋使用得比較

    多的一種數據庫。  

一、在CentOS中安裝MongoDB

1.1、簡介

  MongoDB 有兩個版本類型:開源社區版(Community Edition)和企業版(Enterprise)

,功能上兩者並沒有什麽區別,企業版主要是提供了更多的管理服務,

  有更高級的安全性,如LDAP 身份驗證、Red Hat 標識管理認證。這裏主要討論開源社區版。官方提供了mongodb-org軟件包,其中包含了 MongoDB 幾乎所有

  所需功能,使用系統自帶的yum軟件包管理器可以非常方便地進行安裝

1.2、配置資源庫

  為了確保系統能直接從指定地址獲取軟件包,創建/etc/yum.repos.d/mongodb-org-3.4.repo文件,填入如下內容配置 MongoDB 資源庫:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl
=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

  執行安裝命令

sudo yum install -y mongodb-org

二、啟動

2.1、簡介

  MongoDB 安裝完後,默認會生成很多命令,如 mongo、mongod、mongodump、mongooplog等

  其中比較常用的有 mongod(用於啟動 MongoDB 服務器)、mongo(提供強大的類似 javascript 環境的 mongo shell 交互式功能)

  如果簡單地通過執行 mongod 命令來啟動 MongoDB 服務器,則無法使它在後臺運行,控制臺關了服務也自動停止了,也無法快速啟動指定配置的服務,更不能做

  到開機自啟動。Centos 提供了 service 命令來幫我們快速地啟動一些服務,不過它其實就是跑一個指定的 shell 腳本。當我們輸入 service 命令時,linux 會去

  /etc/rc.d/init.d 下去找這個腳本運行,init.d 下面放了很多這種腳本(如常見的 httpd)。而當我們需要設置開機自啟動時也可以通過 chkconfig 命令來設置

  這些系統服務開機時啟動

2.2、啟動命令及配置開機啟動

  1)啟動命令

  MongoDB 安裝完後默認會在 /etc/rc.d/init.d 下生成啟動腳本 mongod,所以我們可以通過下面命令啟動 MongoDB 服務器:

sudo service mongod start

  2)如需要設置開機啟動可以執行下面腳本

sudo chkconfig mongod on

  3)查看是否啟動

  方法一:

    使用命令:netstat -lanp |grep ""27017" 

    技術分享圖片

  方式二:

    訪問 /var/log/mongodb/mongod.log 日誌文件,如果看到 [initandlisten] waiting for connections on port <port> 的日誌則說明啟動成功。 

    技術分享圖片

三、MongoDB設置

3.1、MongoDB配置文件  

  每個 mongod 服務器進程都需要有自己的數據存儲路徑,默認是 /var/lib/mongo。如果需要啟動多個服務器進程,則可以指定不同的路徑來啟動。

  啟動的默認配置文件是 /etc/mongod.conf。我們可通過這個配置文件實現所需配置:官方配置文件詳解

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

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

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
 bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.
 
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

  註意:

    有一個需要註意的配置是 net 下的 bingIp,如果設置 bindIp: 127.0.0.1 則外網機器無法直接連接此服務器進程

四、認證授權(MongoDB創建用戶個庫)

4.1、簡介

  MongoDB 服務器進程默認啟動後,並無任何認證機制,即任何用戶都可隨意連接數據庫進行讀寫操作MongoDB 有個比較特殊的數據庫 admin,

  專門用來存儲數據庫管理員信息的。在 MongoDB 裏是有不同的角色的,每種角色只能擁有相應的權限,用戶也能自定義角色。官方詳解

4.2、認證授權步驟

  為了啟用認證機制,我們需要創建兩個用戶:擁有 userAdminAnyDatabase 角色的用戶、對應數據庫讀寫權限 readWrite 的用戶,如:  

  先啟動不需要認證的服務器進程,用 mongo shell 直接進入配置:

  1)添加一個超級用戶“root”

    步驟一:打開Mongo shell  

    mongo

    技術分享圖片

    步驟二:進入admin表

    use admin

    技術分享圖片

    步驟三:創建一個超級管理賬戶

    技術分享圖片

    步驟三:查看用戶是否創建成功

    技術分享圖片

    表示創建成功了!

五、MongoDB權限

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

    read:允許用戶讀取指定數據庫
    readWrite:允許用戶讀寫指定數據庫

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

    dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile  

    userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶  

  3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

    clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限

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

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

    readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
    readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
    userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
    dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。

  6)超級用戶角色:root   

.    root:只在admin數據庫中可用。超級賬號,超級權限

    註意:這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)

MongoDB(一)環境搭建與初始配置