1. 程式人生 > 實用技巧 >【資料庫】Linux下MongoDB的安裝和配置

【資料庫】Linux下MongoDB的安裝和配置

MongoDB安裝

選擇使用Yum安裝

1、製作 repo 檔案

cat << EOF > /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
EOF
12345678

baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.2/x86_64/

安裝失敗,嘗試把地址寫死為7,安裝基於centos7的版本。可以成功安裝
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/

2、使用yum 命令安裝

yum install -y mongodb-org

3、啟動mongodb

安裝完啟動服務則可以使用

啟動、停止、重啟命令如下:

service mongod start
service mongod stop
service mongod restart

4、開放mongodb的遠端連線

mongodb的配置檔案是 /etc/mongod.conf

如果要開放遠端訪問需要修改該檔案的 bindIp

值為: 0.0.0.0 ,否則通過其它電腦是連線不到的

vim /etc/mongod.conf

檔案修改後要執行 restart 使配置生效

service mongod restart

如果仍不能遠端連線,檢視防火牆狀態,如果防火牆開啟,關閉防火牆或讓防火牆放開 27017 埠(該埠是mongodb的預設埠,可通過配置檔案修改mongodb的埠)
檢視防火牆狀態

firewall-cmd --state   

關閉防火牆狀態

systemctl stop firewalld.service 

防火牆放開 27017 埠

firewall-cmd --permanent --zone=public --add-port=27017/tcp
firewall-cmd --reload 

測試是否可以遠端連線

http://伺服器ip:27017/

阿里雲伺服器則需要新增埠得安全組

5、建立使用者和密碼

1.進入mongo shell

[root@iZ2ze1wbnx7ym2bkq1xtk5Z conf.d]# mongo
MongoDB shell version v4.2.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("73551ca3-8d61-4ce2-a5d1-c0563f9828d4") }
MongoDB server version: 4.2.8
Server has startup warnings: 
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] 
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] 
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] 
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2020-07-01T15:24:12.665+0800 I  CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> 

2.切換到admin資料庫

admin這個庫是mongodb自動帶的,專門管理使用者和許可權的,建立超級使用者,這個使用者可以管理所有使用者的增刪改以及許可權控制

> use admin
switched to db admin

3.新增賬戶

建立一個超級管理員許可權(擁有userAdminAnyDatabasereadWriteAnyDatabase兩個許可權)的使用者。使用者名稱和密碼隨便寫,但是角色必須是這兩個
db.createUser( { user: "alenghan", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )

注:``db.createUser()`的具體使用方法:連結地址

建立完成就可以使用命令連結

mongo --port 27017 -u "alenghan" --authenticationDatabase "admin" -p 123456

4.修改mongo.conf檔案

停止mongodb服務(service mongod stop),修改配置檔案(/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 # 如果為true,當mongod/mongos重啟後,將在現有日誌的尾部繼續新增日誌。否則,將會備份當前日誌檔案,然後建立一個新的日誌檔案;預設為false。
  path: /var/log/mongodb/mongod.log #日誌路徑

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo # mongod程序儲存資料目錄,此配置僅對mongod程序有效
  journal:
    enabled: true #是否開啟journal日誌持久儲存,journal日誌用來資料恢復,是mongod最基礎的特性,通常用於故障恢復。64位系統預設為true,32位預設為false,建議開啟,僅對mongod程序有效。
#  engine: #儲存引擎型別,mongodb 3.0之後支援“mmapv1”、“wiredTiger”兩種引擎,預設值為“mmapv1”;官方宣稱wiredTiger引擎更加優秀。
#  wiredTiger: #對wiredTiger引擎配置生效

# how the process runs
processManagement:
  fork: true  # fork and run in background 執行在後臺
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile PID檔案路徑
  timeZoneInfo: /usr/share/zoneinfo 

# network interfaces
net:
  port: 27017 #埠
  bindIp: 127.0.0.1 
  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. 繫結外網op 多個用逗號分隔,如果開放全部外網訪問, 輸入0.0.0.0
  # maxIncomingConnections: 65536  #程序允許的最大連線數 預設值為65536
  # wireObjectCheck: true #當客戶端寫入資料時 檢測資料的有效性(BSON) 預設值為true
  
#security: #安全有關的配置
  #authorization: enabled #disabled或者enabled,僅對mongod有效;表示是否開啟使用者訪問控制(Access Control),即客戶端可以通過使用者名稱和密碼認證的方式訪問系統的資料,預設為“disabled”,即客戶端不需要密碼即可訪問資料庫資料。(限定客戶端與mongod、mongos的認證)
  #javascriptEnabled: true #true或者false,預設為true,僅對mongod有效;表示是否關閉server端的javascript功能,就是是否允許mongod上執行javascript指令碼,如果為false,那麼mapreduce、group命令等將無法使用,因為它們需要在mongod上執行javascript指令碼方法。如果你的應用中沒有mapreduce等操作的需求,為了安全起見,可以關閉javascript。
  
#operationProfiling: #效能分析器
  #slowOpThresholdMs: 100 #資料庫profiler判定一個操作是“慢查詢”的時間閥值,單位毫秒;
  #mode: off #資料庫profiler級別,操作的效能資訊將會被寫入日誌檔案中,
  # 可選值:1)off:關閉profiling
  #       2)slowOp:on,只包含慢操作日誌
  #       3)all:on,記錄所有操作
  # 資料庫profiling會影響效能,建議只在效能除錯階段開啟。此引數僅對mongod有效。
  
#replication: #主從複製 主備模式 這個是大點,需要單獨講
  #oplogSizeMB:10240 #replication操作日誌的最大尺寸,單位:MB。

#sharding: #sharding架構 叢集中使用,暫時沒有接觸