centos7.5 上mongdb4.0.3完整單機安裝詳解
目錄
1、下載安裝包(https://www.mongodb.com/download-center#community)
mongdb提供了各作業系統的不同安裝包,下面以64位的centos7.5(rehat紅帽系版本系統)為例:
1、下載安裝包(https://www.mongodb.com/download-center#community )
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz
2、解壓安裝包
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.3.tgz
3、將解壓安裝包移到指定目錄
[[email protected] soft]# mv mongodb-linux-x86_64-rhel70-4.0.3 /usr/local/mongodb
4、新增到 PATH
MongoDB 的可執行檔案位於 bin 目錄下,所以可以將其新增到 PATH 路徑中:
cd /etc/profile
在檔案最後一行新增:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile(立即生效)
5、建立資料相關目錄
MongoDB的資料儲存在data目錄的db目錄下,但是這個目錄在安裝過程不會自動建立,所以你需要手動建立data目錄,並在data目錄中建立db目錄。
以下例項中我們將data目錄創建於根目錄下(/)。
注意:/data/db 是 MongoDB 預設的啟動的資料庫路徑(--dbpath)。
#建立目錄data
mkdir /usr/local/mongodb/mongodb_data
#建立存放資料檔案目錄
cd /usr/local/mongodb/mongodb_data
mkdir /usr/local/mongodb/mongodb_data/data
#建立存放日誌檔案目錄
mkdir /usr/local/mongodb/mongodb_data/log
#建立存放資料庫啟動配置檔案目錄
(可選,也可以不填寫,將採用預設值)
mkdir /usr/local/mongodb/mongodb_data/conf
#建立存放資料庫二進位制檔案目錄
(其實這裡就是/usr/local/mongodb/bin,不建立的,在啟動時可以切換到/usr/local/mongodb/bin目錄執行相關啟動服務,這裡我不建立)
mkdir bin
#建立啟動配置檔案mongo.conf
cd conf
vim mongo.conf
配置檔案內容如下:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/mongodb_data/log/mongod.log
# where and how to store data.
storage:
dbPath: /usr/local/mongodb/mongodb_data/data
journal:
enabled: true
# how the process runs
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/mongodb_data/mongod.pid
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
【注意】 如果沒有指定bind_ip,會導致mongodb預設繫結為127.0.0.1,導致外部無法訪問,如果希望在外部或遠端訪問,那可以設定 bindIp: 0.0.0.0 這樣就可以不受網路限制了。
6、啟動服務
#切換到/usr/local/mongodb/bin目錄下
執行如下啟動命令:
./mongod -f /usr/local/mongodb/mongodb_data/conf/mongo.conf
如果順利啟動,將看到如下列印資訊:
[[email protected] bin]# mongod -f /usr/local/mongodb/mongdb_data/conf/mongo.conf
2018-10-15T21:39:40.964+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
about to fork child process, waiting until server is ready for connections.
forked process: 106236
child process started successfully, parent exiting
7、連線資料庫
資料庫安裝並啟動後,便可以連線資料庫了,連線資料庫有好幾種方法,下面介紹其中部分。
1),內建連線命令:mongo
具體用法可以查幫助命令:
/usr/local/mongodb/bin/mongo --help
由於我們沒有設定密碼,所以可以在安裝所在伺服器用如下命令嘗試登入test資料庫
./mongo localhost:27017/test
# 這裡也可以用僅用命令./mongo ,如果前面我們自定義了連線埠 為12355,而不帶引數的命令./mongo預設是用27017埠的。
或用以下命令
./mongo --port 27017
登入成功後以列印資訊未出現的閃動的“>”符號為準,如下:
8、接著上面,關閉mongo後臺服務
有多種關閉方式,這裡介紹的是進入mongo互動模式後執行相關關閉命令的方式。
按如下命令操作後顯示,則成功關閉
9、設定開機啟動mongdb
1)、編寫自定義服務
在/usr/lib/systemd/system/目錄下新建mongodb.service檔案
內容如下:
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb_data/conf/mongo.conf
ExecReload=ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb_data/conf/mongo.conf
[Install]
WantedBy=multi-user.target
【注意】我當時在編寫上面檔案後用systemctl命令無法啟動,會報
此類錯誤,後面查系統日誌檔案/var/log/messages :
當時分析這問題很久沒法解決,後面還是在mongodb.service檔案裡把行與行之間的換行刪掉就沒有報錯了。
2)、設定許可權
chmod 754 mongodb.service
3)、systemctl 啟動命令
#啟動服務
systemctl start mongodb.service
#關閉服務
systemctl stop mongodb.service
#開機啟動
systemctl enable mongodb.service
4)、開放埠(主要是centos6或更舊版本的設定)
cd /etc/sysconfig/ (切換目錄)
iptables檔案新增-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT(注意:-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT要加在-A INPUT -j REJECT --reject-with icmp-host-prohibited之前,不然啟動無效)
(注意:如果沒有iptables這個檔案,因為centos7自帶firewall
輸入命令:yum install iptables-services更新或者安裝iptables
然後:systemctl enable iptables 啟動iptables
最後 systemctl start iptables 開啟iptables)
10、基本操作
1)、建立使用者
use admin
db.createUser(
{
user: "lhy",
pwd: "lu5896848",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
2)、建立資料庫
use web
db.items.insert({"name":"web"})
3)、給新建立的庫加入使用者
use web
db.createUser(
{
user: "lhy",
pwd: "lu5896848",
roles: [ { role: "readWrite", db: "web" } ]
}
)
4)、關閉資料庫
use admin
db.shutdownServer()
5)、常用命令
use dbname # 使用哪個資料庫
db.auth("user","pwd") # 驗證
show dbs # 顯示所有資料庫
show users # 顯示當前資料庫的所有使用者
db.dropDatabase() # 刪除資料庫
db.shutdownServer() # 關閉資料庫
6)、備份恢復資料庫
備份
mongodump -d <資料庫名><資料夾目錄>
恢復
mongorestore -d <資料庫名><資料夾目錄>
7)、系統控制代碼調優(根據實際情況而定)
vim /etc/security/limits.conf
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
11、登入認證
上面的配置是沒有密碼認證的,實際環境中是要加登入驗證的
修改mongod.conf (見文尾參考資料所用配置格式)新增下面的內容:
security:
authorization: enabled
重啟mongodb,再次登入(我們以前面配置的lhy賬戶為例(dba賬戶配置的密碼為lu5896848))
首先連線mongo,在進行認證
# ./bin/mongo --port 12355
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.1
> use admin
switched to db admin
> db.auth("lhy","lu58966848")
1
>