本文介紹的安裝方式是以二進制方式離線安裝,至關於windows「綠色」安裝版本的概念。php
下載mongodb:html
# https://www.mongodb.com/download-center?initial=true#community cd /usr/local curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz tar xvzf mongodb-linux-x86_64-rhel70-4.0.3.tgz mv mongodb-linux-x86_64-rhel70-4.0.3 /usr/local/mongodb
環境變量配置vi /etc/profile
:node
export MONGODB_HOME=/usr/local/mongodb export PATH=$MONGODB_HOME/bin:$PATH
運行mongod -v
查看mongodb是否安裝成功linux
自建數據庫文件夾:git
# root用戶執行 mkdir -p /data/mongodb # 自定義數據目錄 chmod 0755 /data/mongodb mkdir -p /data/mongodb/log touch /data/mongodb/log/mongod.log chmod 0755 /lib/systemd/system/mongod.service
mongod.conf
打開mongod.conf
配置文件, 經過這個配置文件進行啓動.github
vim /etc/mongod.conf
配置文件內容:mongodb
dbpath=/data/mongodb logpath=/data/mongodb/log/mongod.log logappend=true port=27017 bind_ip=0.0.0.0 # 爲了讓遠端能夠訪問 fork=true ##auth = true # 先關閉, 建立好用戶在啓動 # 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 path: /data/mongodb/log/mongod.log # Where and how to store data. storage: #dbPath: /var/lib/mongo dbPath: /data/mongodb 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 pidFilePath: /data/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo # network interfaces net: port: 27017 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. # 爲了讓遠端能夠訪問 #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp:
經過配置文件啓動:shell
mongod -f /etc/mongod.conf about to fork child process, waiting until server is ready for connections. forked process: 2814 child process started successfully, parent exiting
出現successfully
表示啓動成功了.數據庫
mongodb的參數說明(mongod -h
):ubuntu
dbpath 數據庫路徑(數據文件)
logpath 日誌文件路徑
master 指定爲主機器
slave 指定爲從機器
source 指定主機器的IP地址
pologSize 指定日誌文件大小不超過64M.由於resync是很是操做量大且耗時,最好經過設置一個足夠大的oplogSize來避免resync(默認的 oplog大小是空閒磁盤大小的5%)。
logappend 日誌文件末尾添加
port 啓用端口號
fork 在後臺運行
only 指定只複製哪個數據庫
slavedelay 指從複製檢測的時間間隔
auth 是否須要驗證權限登陸(用戶名和密碼)
注:mongodb配置文件裏面的參數不少,定製特定的需求,請參考官方文檔
auth
默認是關閉的,參考以下文章能夠打開:
參數:
mongod.service
cd /usr/lib/systemd/system # 或者 cd /lib/systemd/system vi mongod.service
如下是後來嘗試yum install -y mongodb-org
方式安裝4.0
版本時,自動在/lib/systemd/system/mongod.service
生成的文件,本次離線安裝借鑑來用,由於個人數據都在/data/mongodb
目錄下,所以,將一些本來的操做註釋了:
[Unit] Description=MongoDB Database Server After=network.target Documentation=https://docs.mongodb.org/manual [Service] User=root Group=root Environment="OPTIONS=-f /etc/mongod.conf" EnvironmentFile=-/etc/sysconfig/mongod ExecStart=/usr/bin/mongod $OPTIONS # 註釋 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb ExecStartPre=/usr/bin/mkdir -p /data/mongodb # 註釋 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb ExecStartPre=/usr/bin/chown root:root /data/mongodb # 註釋 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb ExecStartPre=/usr/bin/chmod 0755 /data/mongodb PermissionsStartOnly=true # 註釋 PIDFile=/var/run/mongodb/mongod.pid PIDFile=/data/mongodb/mongod.pid Type=forking # file size LimitFSIZE=infinity # cpu time LimitCPU=infinity # virtual memory size LimitAS=infinity # open files LimitNOFILE=64000 # processes/threads LimitNPROC=64000 # locked memory LimitMEMLOCK=infinity # total threads (user+kernel) TasksMax=infinity TasksAccounting=false # Recommended limits for for mongod as specified in # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install] WantedBy=multi-user.target
接着執行:systemctl daemon-reload
官網提示,在運行以前,還須要:
systemctl disable firewalld.service systemctl stop firewalld.service
SELinux
設置
Disable SELinux by setting the SELINUX setting to disabled in /etc/selinux/config
SELINUX=disabled
注意點:
If you installed manually by downloading the tarballs, you can create the directories using mkdir -p
or sudo mkdir -p depending on the user that will run MongoDB. (See your linux man pages for information on mkdir and sudo.)
By default, MongoDB runs using the mongod user account. If you change the user that runs the MongoDB process, you must also modify the permission to the /var/lib/mongo and /var/log/mongodb directories to give this user access to these directories.
默認狀況下,MongoDB使用mongod
用戶賬戶運行。若是更改運行MongoDB進程的用戶,則還必須修改/var/lib/mongo
和/var/log/mongodb
目錄的權限,以授予此用戶訪問這些目錄的權限。本文將數據都放在了/data/mongodb
文件夾下,所以,權限也要注意設置正確。
參考這篇文章看到:
如今就可使用:
systemctl enable mongod
開機自啓服務systemctl start mongod
啓動服務;systemctl status mongod
查看狀態systemctl stop mongod
關閉服務mongod服務中止也可使用:
mongod --shutdown -f /etc/mongod.conf
ps -aux|grep mongo # 獲取mongod進程,例如是8888。 kill -2 8888 # 或者 kill -4 8888 # kill -9 8888該方式不安全,不推薦**
use admin db.shutdownServer()
參考:
systemctl eanble mongod
或者:
echo "/usr/local/mongodb/bin/mongod -f /etc/mongod.conf" >> /etc/rc.d/rc.local # 注意,命令須要使用絕對命令
參考:
進入 MongoDB後臺管理 Shell:
mongo # 前提是已經配置了環境變量 mongo --port 27017 # 進入端口27017的mongod實例
用戶設置:
賬號是跟着庫走的,因此在指定庫裏受權,必須也在指定庫裏驗證(auth)。
給admin
數據庫建立一個用戶:
use admin db.createUser({user:"root",pwd:"root",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
user
表示用戶名,pwd
表示密碼,role
表示角色,db
表示這個用戶應用在哪一個數據庫上。
角色名 | 備註 |
---|---|
Read | 容許用戶讀取指定數據庫 |
readWrite | 容許用戶讀寫指定數據庫 |
dbAdmin | 容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile |
userAdmin | 容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶 |
clusterAdmin | 只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。 |
readAnyDatabase | 只在admin數據庫中可用,賦予用戶全部數據庫的讀權限 |
readWriteAnyDatabase | 只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限 |
userAdminAnyDatabase | 只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限 |
dbAdminAnyDatabase | 只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。 |
root | 只在admin數據庫中可用。超級帳號,超級權限 |
驗證:
use admin db # 查看當前所在的數據庫 db.auth('root','root') show users # 查看當前數據庫的用戶
詳細權限配置參考網址:
#查看全部用戶 show users #查看全部數據庫 show dbs #查看全部的collection show collections #查看各collection的狀態 db.printCollectionStats() #查看主從複製狀態 db.printReplicationInfo()
systemctl stop mongod yum erase $(rpm -qa | grep mongodb-org) sudo rm -r /data/mongodb # /var/log/mongodb sudo rm -r /var/lib/mongo
uri
的方式訪問數據庫,怎麼也沒法訪問查看mongo服務是否啓動,mongd
命令已經啓動了,並且mongo
命令鏈接也OK。
查看官方文檔,發現默認ip是localhost
,因此須要在配置文件中增長bind_ip=0.0.0.0
才能訪問數據庫。
參考:centos搭建mongodb環境這篇文章也提到了bind_ip
字段配置要正確,不然遠程鏈接不上。
主要緣由在於mongodb相關文件件的權限問題致使的
與host設置有關係
netstat -lanp # 查看監聽的端口 telnet [ip] [port] # 查看端口是否OK mongostat # 監控MongoDB的內存使用狀況