一、下載linux版本mongoDB
- 訪問mongoDB官網,選擇對應版本,官方下載地址
current release ---->當前穩定版
previous release ---->舊版本
系統說明
Ubuntu ----> 優般圖
Linux legacy ----> 通用版
window ----> 不解釋
RHEL Linux ----> 紅帽
Amazon Linux ----> 亞馬遜
Debian Linux ----> Debian
SUSE Linux ----> SUSE
複製程式碼
-
我linux系統安裝的是centOS 7,屬於紅帽旗下,所以我選擇的RHEL 7.2 Linux的mongoDB,貼個圖,我選擇的各個版本
-
安裝 這次安裝使用tgz包
1,安裝wget
[root@izbp1b498epn4trb75oykez ~]# yum -y install wget
2,使用wget下載tgz包,我當前目錄/usr/local/
[root@izbp1b498epn4trb75oykez local]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.9.tgz
3,新建mongoDB資料夾,將tgz檔案解壓至mongoDB資料夾下
[root@izbp1b498epn4trb75oykez local]# mkdir mongoDB
[root@izbp1b498epn4trb75oykez local]# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.9.tgz -C /usr/local/mongoDB
4,進入mongoDB目錄,檢視目錄檔案,發現還有一個mongodb-linux-x86_64-rhel70-4.0.9目錄,這個目錄內才是mongoDB的檔案,我們將這個目錄內的檔案移動到mongoDB目錄下
[root@izbp1b498epn4trb75oykez local]# cd mongoDB/
[root@izbp1b498epn4trb75oykez mongoDB]# ls
mongodb-linux-s390x-rhel72-4.0.9
[root@izbp1b498epn4trb75oykez mongoDB]# cd mongodb-linux-x86_64-rhel70-4.0.9
[root@izbp1b498epn4trb75oykez mongodb-linux-x86_64-rhel70-4.0.9]# ls
bin LICENSE-Community.txt MPL-2 README THIRD-PARTY-NOTICES
[root@izbp1b498epn4trb75oykez mongodb-linux-x86_64-rhel70-4.0.9]# mv * ../
5,刪除已無用的mongodb-linux-x86_64-rhel70-4.0.9資料夾,(沒有強迫症可不刪)
[root@izbp1b498epn4trb75oykez mongoDB]# rm -rf mongodb-linux-x86_64-rhel70-4.0.9
複製程式碼
二、配置啟動
- 在mongoDB根目錄下建立data目錄及其子目錄db,以及日誌目錄logs以及其日誌檔案mongoLogs.log,和配置檔案mongodb.conf,命令如下
[root@izbp1b498epn4trb75oykez mongoDB]# mkdir data
[root@izbp1b498epn4trb75oykez mongoDB]# mkdir data/db
[root@izbp1b498epn4trb75oykez mongoDB]# mkdir logs
[root@izbp1b498epn4trb75oykez mongoDB]# touch logs/mongoLogs.log
[root@izbp1b498epn4trb75oykez mongoDB]# touch mongodb.conf
複製程式碼
- 編輯配置檔案mongodb.conf,命令如下
[root@izbp1b498epn4trb75oykez mongoDB]# vi mongodb.conf
複製程式碼
- 開啟檔案後,英文狀態下按鍵盤i鍵進入檔案編輯狀態,檔案內容如下
#埠號 預設27017
port=27017
#資料目錄
dbpath = /usr/local/mongoDB/data/db
#日誌檔案
logpath = /usr/local/mongoDB/logs/mongoLogs.log
#設定後臺執行
fork = true
#日誌輸出方式
logappend = true
複製程式碼
- 編輯好之後按鍵盤ESC退出編輯狀態,接著按shift+:鍵,然後輸入wq,按回車儲存退出
- 以配置檔案啟動mongodb,命令如下
[root@izbp1b498epn4trb75oykez bin]# ./mongod --config /usr/local/mongoDB/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 6685
child process started successfully, parent exiting
./mongo連線測試庫
[root@izbp1b498epn4trb75oykez bin]# ./mongo
複製程式碼
- 啟動成功,./mongo連線測試庫,連線成功輸入exit退出
三、配置賬戶,授權登入
-
mongodb我們已經安裝完成,也成功啟動連線上了測試庫,但此時我們./mongo啟動的時候是預設不需要授權登入的,這樣並不安全,所以我們需要建立管理員,之後啟動及操作都需要授權登入才可以進行。
-
建立admin資料庫,建立使用者,設定賬號,密碼,許可權
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"123456",roles:["root"]})
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
複製程式碼
- 使用賬號密碼登入後,結束mongodb程式
> use admin
switched to db admin
> db.auth('root','123456');
1
> db.shutdownServer();
Wed Nov 14 06:07:33 DBClientCursor::init call() failed
Wed Nov 14 06:07:33 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1:27017
server should be down...
Wed Nov 14 06:07:33 trying reconnect to 127.0.0.1:27017
Wed Nov 14 06:07:33 reconnect 127.0.0.1:27017 failed couldnt connect to server 127.0.0.1:27017
複製程式碼
- 修改配置檔案,重啟使配置生效
[root@izbp1b498epn4trb75oykez mongoDB]# vi mongodb.conf
複製程式碼
配置檔案內容
#埠號 預設27017
port=27017
#繫結ip 預設127.0.0.1只允許本地連線
bind_ip = 0.0.0.0
#資料目錄
dbpath = /usr/local/mongoDB/data/db
#日誌檔案
logpath = /usr/local/mongoDB/logs/mongoLogs.log
#設定後臺執行
fork = true
#日誌輸出方式
logappend = true
#開啟身份驗證
auth = true
複製程式碼
重啟
[root@izbp1b498epn4trb75oykez bin]# ./mongod --config /usr/local/mongoDB/mongodb.conf
複製程式碼
- 以管理員賬號登入,建立普通使用者,之後本地做開發連線資料庫時需要配置賬號密碼才可以成功連線
1,以管理員賬號連線資料庫
[root@izbp1b498epn4trb75oykez bin]# ./mongo 127.0.0.1:27017/admin --username "root" --password "123456"
2,建立資料庫,建立賬號,給讀寫許可權
> use blog
> db.createUser({user:"blogAdmin",pwd:"123456",roles:[{role:"readWrite",db:"blog"}]})
Successfully added user: {
"user" : "blogAdmin",
"roles" : [
{
"role" : "readWrite",
"db" : "blog"
}
]
}
複製程式碼
四、開放對外埠,遠端連線
- 如果是阿里雲主機需要在阿里雲控制檯開啟27017埠,然後在伺服器命令列開啟相應埠,然後重啟防火牆生效
1,檢視防火牆狀態
[root@izbp1b498epn4trb75oykez redis]# systemctl status firewalld
2,開啟redis埠
[root@izbp1b498epn4trb75oykez redis]# firewall-cmd --zone=public --add-port=27017/tcp --permanent
success
3,重啟防火牆
[root@izbp1b498epn4trb75oykez redis]# firewall-cmd --reload
4,檢視埠號是否開放成功,輸出yes開放成功,no則失敗
[root@izbp1b498epn4trb75oykez redis]# firewall-cmd --zone=public --query-port=27017/tcp
複製程式碼
- 如果是其他主機可以參考這篇文章
- 埠開放成功後可以使用Navicat連線測試
- 連線成功,由於資料庫中沒有內容所以顯示的是空白
- 開發中連線中使用,各個語言連線工具不一定相同這裡以nodejs舉例
import mongoose from 'mongoose';
const db = mongoose.connect('mongodb://blogAdmin:123456@[你的IP]:27017/blog', { useNewUrlParser: true }, err => {
if (err) {
console.log('出錯---------->', err)
} else {
console.log('連結成功')
}
})
複製程式碼
五、使用者許可權角色說明
Read:允許使用者讀取指定資料庫
readWrite:允許使用者讀寫指定資料庫
dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
root:只在admin資料庫中可用。超級賬號,超級許可權。
六、完成
- 至此linux安裝mongodb與遠端連線全部完成,描述過程中如有不準確或講解不清楚的地方歡迎在評論區留言斧正,撒花????