在阿里云centos下部署mongodb教程
本教程是在阿里云centos下部署mongodb的過(guò)程,整個(gè)過(guò)程遇到不少坑,浪費(fèi)了很多時(shí)間。在網(wǎng)上查了很多教程,但是由于教程大多太久了,環(huán)境都不一樣了,所以教程絕大部分走不通。為此走過(guò)不少坑,所以在此做一下記錄。
環(huán)境:
系統(tǒng):阿里云centos 7.3 64位
mongodb版本: 3.4
因?yàn)槭褂脃um安裝非常方便,所以下文使用yum安裝,。
修改yum包管理配置:
vi /etc/yum.repos.d/mongodb-org-3.4.repo // 會(huì)自動(dòng)新建mongodb-org-3.4.repo文件
復(fù)制下面配置信息:
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=0 enabled=1
tips: 不懂linux去惡補(bǔ)下基礎(chǔ)知識(shí)(vi 編輯器)
安裝mongodb
yum install -y mongodb-org // 一路yes安裝mongodb
啟動(dòng)mongodb
systemctl start mongod.service // 啟動(dòng)mongodb
停止mongodb
systemctl stop mongod.service // 停止mongodb
重啟mongodb
systemctl restart mongod.service // 重啟mongodb
設(shè)置mongodb開(kāi)機(jī)啟動(dòng)
systemctl enable mongod.service // 設(shè)置開(kāi)機(jī)啟動(dòng)
tips: centos 7將service命令 改為systemctl。
mongodb安裝成功,默認(rèn)配置文件路徑為:/etc/mongod.conf。執(zhí)行cat /etc/mongod.conf,查看文件的配置。
配置文件是yaml 語(yǔ)法:
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log // 日志文件儲(chǔ)存路徑 storage: dbPath: /var/lib/mongo // 數(shù)據(jù)儲(chǔ)存路徑 journal: enabled: true
你也可以更改儲(chǔ)存路徑,更改路徑時(shí)因先新建相關(guān)文件夾和文件,這里不做修改。
本地連接mongodb:
mongo // 連接本地mongodb show dbs // 查看所有數(shù)據(jù)庫(kù) use mydb // 切換mydb數(shù)據(jù)庫(kù),沒(méi)有會(huì)自動(dòng)添加 show collections // 查看集合
默認(rèn)情況下,mongodb是沒(méi)有安全驗(yàn)證的,都可以連接到該數(shù)據(jù)庫(kù)。因?yàn)閙ongodb要求是部署在一個(gè)安全的環(huán)境中,而不需要驗(yàn)證。
遠(yuǎn)程連接:
在本地window中,打開(kāi)cmd,執(zhí)行mongo 192.168.31.54 (192.168.31.54為你的阿里云服務(wù)器外網(wǎng)地址),發(fā)現(xiàn)連接不上,網(wǎng)上找了很長(zhǎng)時(shí)間,終于解決了。
1、在阿里云esc實(shí)例中設(shè)置安全組,把27017端口開(kāi)放,mongodb 默認(rèn)端口為27017,阿里云為了安全端口默認(rèn)都是關(guān)閉的。
2、修改mongodb配置文件:
vi /etc/mongod.conf // 編輯配置文件 net: port: 27017 bindIp: 127.0.0.1 // mongodb 默認(rèn)綁定的IP地址
默認(rèn)情況下,阿里云只綁定了127.0.0.1本地地址,只能本地訪問(wèn),需要在上面加上阿里云內(nèi)網(wǎng)地址。
bindIp: 127.0.0.1,阿里云內(nèi)網(wǎng)地址
重啟mongodb服務(wù)器:
systemctl restart mongod.service
在本地cmd中再執(zhí)行
mongo 阿里云外網(wǎng)地址 // 發(fā)現(xiàn)現(xiàn)在可以連接上了。
到此本地和遠(yuǎn)程都可以連接上mongodb了,遠(yuǎn)程可以用可視化工具Robomongo連接,直接輸入阿里云外網(wǎng)地址和端口號(hào)27017即可以遠(yuǎn)程連接成功。雖然遠(yuǎn)程可以連接上mongodb,但是只要知道阿里云外網(wǎng)地址,誰(shuí)都可以通過(guò)遠(yuǎn)程連接到數(shù)據(jù)庫(kù),并且修改數(shù)據(jù)庫(kù)了的數(shù)據(jù),這樣是非常不安全的。所以實(shí)際部署中是不建議bindIp里面加上阿里云內(nèi)網(wǎng)地址的,只能通過(guò)本地訪問(wèn)。遠(yuǎn)程連接只是為了能方便用可視化工具Robomongo方便管理數(shù)據(jù)庫(kù)。如果要想用Robomongo,又想數(shù)據(jù)庫(kù)不能隨便被別人連接上可以嗎?當(dāng)然可以,只需開(kāi)啟身份認(rèn)證。
默認(rèn)情況下mongodb是關(guān)閉身份認(rèn)證的,開(kāi)啟身份認(rèn)證需如下步驟:
1、修改mongodb配置文件
vi /etc/mongod.conf // 編輯mongod.conf文件 security: // 去掉security前面# authorization: enabled // 添加這句開(kāi)啟認(rèn)證
在網(wǎng)上看了很多教程關(guān)于開(kāi)啟身份認(rèn)證的,使用auth=true發(fā)現(xiàn)不行,后來(lái)才知道是教程太老了,配置字段都變了,坑的我找了很長(zhǎng)時(shí)間。
2、添加超級(jí)管理員
默認(rèn)Mongodb是沒(méi)有管理員等用戶信息的,開(kāi)啟身份認(rèn)證是需要添加用戶信息驗(yàn)證。首先添加的應(yīng)該是admin數(shù)據(jù)庫(kù)里的管理員賬號(hào),他用于其他數(shù)據(jù)庫(kù)的用戶添加、修改、刪除等一些權(quán)限控制。
執(zhí)行如下操作:
mongo // 本地連接數(shù)據(jù)庫(kù) use admin // 切換到admin數(shù)據(jù)庫(kù),沒(méi)有會(huì)自動(dòng)添加 db.createUser( // 創(chuàng)建管理員用戶 { user: "admin", // 賬號(hào) pwd: "admin", // 密碼 roles: [ { role: "root", db: "admin" } ] // 角色:超級(jí)管理員,數(shù)據(jù)庫(kù):admin } )
創(chuàng)建成功后會(huì)輸出Successfully added user。。。
重啟mongodb
systemctl restart mongod.service
執(zhí)行
mongo // 連接數(shù)據(jù)庫(kù) show dbs // 顯示所有數(shù)據(jù)庫(kù),這步會(huì)報(bào)錯(cuò),說(shuō)沒(méi)有通過(guò)驗(yàn)證。 use admin // 切換到admin數(shù)據(jù)庫(kù) db.auth('admin','admin') // 用上面設(shè)置的賬號(hào)密碼登錄
如果返回 '1'表示驗(yàn)證成功, 如果是 '0' 表示驗(yàn)證失敗
身份驗(yàn)證開(kāi)啟了,在window端cmd中執(zhí)行下面命令
mongo 阿里云外網(wǎng)地址 // 發(fā)現(xiàn)連接失敗,因?yàn)闆](méi)有通過(guò)驗(yàn)證。
如果執(zhí)行下面這句
mongo 阿里云外網(wǎng)地址 -u "admin" -p "admin" --authenticationDatabase admin
// 發(fā)現(xiàn)連接成功
Robomongo身份認(rèn)證連接:
切換到Authorization選項(xiàng),選中Perform authorization,填上Database, user name, password,就可以連接成功了。
mongodb不像mysql,驗(yàn)證的用戶對(duì)所有數(shù)據(jù)庫(kù)都有讀寫的能力,不同的庫(kù)需要配置相關(guān)的用戶信息才能對(duì)該庫(kù)進(jìn)行讀寫。比如有個(gè)myblog的數(shù)據(jù)庫(kù),需要對(duì)其有讀寫的能力,新建一個(gè)具有讀寫能力的用戶。
命令如下:
mongo // 連接數(shù)據(jù)庫(kù) use admin // 切換到admin數(shù)據(jù)庫(kù) db.auth('admin','admin') // auth驗(yàn)證登錄 use myblog // 切換到myblog數(shù)據(jù)庫(kù) db.createUser( // 創(chuàng)建普通用戶 { user: "keen", // 賬號(hào) pwd: "123", // 密碼 roles: [ { role: "readWrite", db: "myblog" } ] // 角色:讀寫,數(shù)據(jù)庫(kù):myblog } ) db.auth('keen', '123') // 使用新建用戶keen驗(yàn)證登錄
到此整個(gè)mongodb配置結(jié)束了,關(guān)于mongodb的身份認(rèn)證,以及權(quán)限控制,可以看看這篇文章,寫的很詳細(xì)。
相關(guān)文章
mongodb 中rs.stauts()命令參數(shù)解析
MongoDB的rs.status()命令是查看副本集狀態(tài)的重要工具,它可以展示副本集中各個(gè)成員的角色、健康狀態(tài)、同步進(jìn)度等關(guān)鍵信息,本文介紹mongodb 中rs.stauts()命令參數(shù)解析,感興趣的朋友跟隨小編一起看看吧2024-09-09SpringBoot?整合mongoDB并自定義連接池的示例代碼
這篇文章主要介紹了SpringBoot?整合mongoDB并自定義連接池?,整合mongoDB的目的就是想用它給我們提供的mongoTemplate,它可以很容易的操作mongoDB數(shù)據(jù)庫(kù),對(duì)整合過(guò)程及實(shí)例代碼感興趣的朋友跟隨小編一起看看吧2022-02-02MongoDB創(chuàng)建一個(gè)索引而性能提升1000倍示例代碼
這篇文章主要給大家介紹了關(guān)于如何在MongoDB中創(chuàng)建一個(gè)索引而性能提升1000倍的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01MongoDB的安裝啟動(dòng)及做成windows服務(wù)的教程圖解
這篇文章主要介紹了MongoDB的安裝啟動(dòng)及做成windows服務(wù)的教程圖解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05Mongodb基本操作與Python連接mongodb并進(jìn)行基礎(chǔ)操作的方法
mongodb是基于分布式文件存儲(chǔ)的nosql(非關(guān)系型)數(shù)據(jù)庫(kù),本文分享了mongodb的基礎(chǔ)操作和Python連接并操作mongodb的基礎(chǔ)方法,基礎(chǔ)的不能再基礎(chǔ)了2018-09-09mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過(guò)濾的方法步驟
這篇文章主要介紹了mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過(guò)濾的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10