標籤:width 自己 x86_64 target netstat body lda log 輸入
前言
最近的項目中需要用到MongoDB,所這段時間需要學習知道怎麼去使用這個資料庫。
這裡我先簡單的介紹一下什麼是MongoDB,後面還會詳細的介紹:
MongoDB 是一個面向文檔的通用型資料庫,擁有 MySQL 等關係型資料庫常用功能。除了能夠建立、讀取、更新和刪除資料之外,也還提供了一些拓展的功能,
如索引、彙總、特殊的集合類型(如時間有限的集合)、分區和叢集,是一個便於使用、便於拓展的資料庫。也正因為它的這些特性,也是前端童鞋使用得比較
多的一種資料庫。
一、在CentOS中安裝MongoDB1.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 Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/gpgcheck=1enabled=1gpgkey=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 runsprocessManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile# network interfacesnet: 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(一)環境搭建與初始配置