MongoDB介紹
簡介
- MongoDB 是一個基於分布式 文件存儲的NoSQL數據庫
- 由C++語言編寫,運行穩定,性能高
- 旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案
- 查看官方網站
MongoDB特點
- 模式自由 :可以把不同結構的文檔存儲在同一個數據庫里
- 面向集合的存儲:適合存儲 JSON風格文件的形式
- 完整的索引支持:對任何屬性可索引
- 復制和高可用性:支持服務器之間的數據復制,支持主-從模式及服務器之間的相互復制。復制的主要目的是提供冗余及自動故障轉移
- 自動分片:支持雲級別的伸縮性:自動分片功能支持水平的數據庫集群,可動態添加額外的機器
- 豐富的查詢:支持豐富的查詢表達方式,查詢指令使用JSON形式的標記,可輕易查詢文檔中的內嵌的對象及數組
- 快速就地更新:查詢優化器會分析查詢表達式,並生成一個高效的查詢計划
- 高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)
Packages包說明
MongoDB官方源中包含以下幾個依賴包:
mongodb-org: MongoDB元數據包,安裝時自動安裝下面四個組件包:
1.mongodb-org-server: 包含MongoDB守護進程和相關的配置和初始化腳本。
2.mongodb-org-mongos: 包含mongos的守護進程。
3.mongodb-org-shell: 包含mongo shell。
4.mongodb-org-tools: 包含MongoDB的工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。
安裝
1安裝
https://www.mongodb.com/download-center/community(官方)
https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/RPMS/(清華)
https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/(阿里)
yum -y install https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/上面文件名字
安裝完之后,是一個服務。 服務名字mongod.service
systemctl enable mongod.service
systemctl start mongod.service
進入mongodb添加用戶
進入的方式
mongo mongo ip:端口 mongo -u 賬號 -p 密碼
mongo -host 192.168.31.102 -port 27017 -u root -p wdq123 -authenticationDatabase admin
進入后創建用戶
db.createUser(
{
user: "abc",
pwd: "aaa@bbb",
roles: [ { role: "root", db: "admin" } ]
}
)
確定用戶是否創建成功
db.auth("useradmin", "adminpassword") #如果返回1,則表示成功。
exit #退出系統
roles中的role可以是以下
2啟用身份驗證
#外網訪問(默認是127.0.0.1,只能在內網訪問) net: port: 27017 bindIp: 0.0.0. #身份驗證 security: authorization: enabled
修改mongodb配置(yum文件)
查找mongodb目錄
whereis mongod
修改配置文件
vim /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: # wiredTiger: # how the process runs processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo # network interfaces net: port: 27017 bindIp: 192.168.31.102 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. --修改為ip
security: authorization: enabled
--這個開啟需要密碼登錄
#operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp:

# mongodb.conf # 數據庫文件位置 dbpath=/var/lib/mongodb #日志文件的路徑 logpath=/var/log/mongodb/mongodb.log # 是否追加方式寫入日志,默認True logappend=true # 設置綁定ip bind_ip = 127.0.0.1 # 設置端口 port = 27017 # 是否以守護進程方式運行,默認false fork = true # 啟用日志文件,默認啟用 journal=true # 啟用定期記錄CPU利用率和 I/O 等待,默認false #cpu = true # 是否以安全認證方式運行,默認是不認證的非安全方式 #noauth = true #auth = true # 詳細記錄輸出,默認false #verbose = true #用於開發驅動程序時驗證客戶端請求 #objcheck = true # # 啟用數據庫配額管理,默認false #quota = true # 設置oplog日志記錄等級,默認0 # 0=off (default) # 1=W # 2=R # 3=both # 7=W+some reads #oplog = 0 # 是否打開動態調試項,默認false #nocursors = true # 忽略查詢提示,默認false #nohints = true # 禁用http界面,默認為localhost:28017 #nohttpinterface = true # 關閉服務器端腳本,這將極大的限制功能,默認false #noscripting = true # 關閉掃描表,任何查詢將會是掃描失敗 #notablescan = true # 關閉數據文件預分配 #noprealloc = true # 為新數據庫指定.ns文件的大小,單位:MB # nssize = <size> # 用於Mongo監控服務器的Accout token。 #mms-token = <token> # Mongo監控服務器的服務器名稱。 #mms-name = <server-name> # Mongo監控服務器的Ping間隔時間,即心跳 #mms-interval = <seconds> # Replication Options # 設置主從復制參數 #slave = true # 設置從節點 #source = master.example.com # 指定從節點的主節點 # Slave only: 指定要復制的單個數據庫 #only = master.example.com # or #master = true # 設置主節點 #source = slave.example.com # 設置副本集的名字,所有的實例指定相同的名字屬於一個副本集 replSet = name #pairwith = <server:port> # 仲裁服務器地址 #arbiter = <server:port> # 默認為false,用於從實例設置。是否自動重新同步 #autoresync = true # 指定的復制操作日志(OPLOG)的最大大小 #oplogSize = <MB> # 限制復制操作的內存使用 #opIdMem = <bytes> # 設置ssl認證 # Enable SSL on normal ports #sslOnNormalPorts = true # SSL Key file and password #sslPEMKeyFile = /etc/ssl/mongodb.pem #sslPEMKeyPassword = pass

# 普通配置文件 # mongodb.conf dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongodb.log pidfilepath=/var/log/mongodb/master.pid directoryperdb=true logappend=true bind_ip=127.0.0.1 port=27017 fork=true # 集群配置文件 dbpath=/var/lib/mongodb logpath=/var/log/mongodb/mongodb.log pidfilepath=/var/log/mongodb/master.pid directoryperdb=true logappend=true replSet=name bind_ip=127.0.0.1 port=27017 fork=true noprealloc=true
重啟服務
用戶權限
每個數據庫都要有獨立的密碼...
use yourdatabase
db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
新建讀寫賬戶
use yourdatabase
db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite", db: "yourdatabase" }] })
服務器指令
mongo -h
查看幫助文檔