您好,登錄后才能下訂單哦!
本教程是在阿里云centos下部署mongodb的過程,整個過程遇到不少坑,浪費了很多時間。在網上查了很多教程,但是由于教程大多太久了,環境都不一樣了,所以教程絕大部分走不通。為此走過不少坑,所以在此做一下記錄。
環境:
系統:阿里云centos 7.3 64位
mongodb版本: 3.4
因為使用yum安裝非常方便,所以下文使用yum安裝,。
修改yum包管理配置:
vi /etc/yum.repos.d/mongodb-org-3.4.repo // 會自動新建mongodb-org-3.4.repo文件
復制下面配置信息:
[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去惡補下基礎知識(vi 編輯器)
安裝mongodb
yum install -y mongodb-org // 一路yes安裝mongodb
啟動mongodb
systemctl start mongod.service // 啟動mongodb
停止mongodb
systemctl stop mongod.service // 停止mongodb
重啟mongodb
systemctl restart mongod.service // 重啟mongodb
設置mongodb開機啟動
systemctl enable mongod.service // 設置開機啟動
tips: centos 7將service命令 改為systemctl。
mongodb安裝成功,默認配置文件路徑為:/etc/mongod.conf。執行cat /etc/mongod.conf,查看文件的配置。
配置文件是yaml 語法:
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log // 日志文件儲存路徑 storage: dbPath: /var/lib/mongo // 數據儲存路徑 journal: enabled: true
你也可以更改儲存路徑,更改路徑時因先新建相關文件夾和文件,這里不做修改。
本地連接mongodb:
mongo // 連接本地mongodb show dbs // 查看所有數據庫 use mydb // 切換mydb數據庫,沒有會自動添加 show collections // 查看集合
默認情況下,mongodb是沒有安全驗證的,都可以連接到該數據庫。因為mongodb要求是部署在一個安全的環境中,而不需要驗證。
遠程連接:
在本地window中,打開cmd,執行mongo 192.168.31.54 (192.168.31.54為你的阿里云服務器外網地址),發現連接不上,網上找了很長時間,終于解決了。
1、在阿里云esc實例中設置安全組,把27017端口開放,mongodb 默認端口為27017,阿里云為了安全端口默認都是關閉的。
2、修改mongodb配置文件:
vi /etc/mongod.conf // 編輯配置文件 net: port: 27017 bindIp: 127.0.0.1 // mongodb 默認綁定的IP地址
默認情況下,阿里云只綁定了127.0.0.1本地地址,只能本地訪問,需要在上面加上阿里云內網地址。
bindIp: 127.0.0.1,阿里云內網地址
重啟mongodb服務器:
systemctl restart mongod.service
在本地cmd中再執行
mongo 阿里云外網地址 // 發現現在可以連接上了。
到此本地和遠程都可以連接上mongodb了,遠程可以用可視化工具Robomongo連接,直接輸入阿里云外網地址和端口號27017即可以遠程連接成功。雖然遠程可以連接上mongodb,但是只要知道阿里云外網地址,誰都可以通過遠程連接到數據庫,并且修改數據庫了的數據,這樣是非常不安全的。所以實際部署中是不建議bindIp里面加上阿里云內網地址的,只能通過本地訪問。遠程連接只是為了能方便用可視化工具Robomongo方便管理數據庫。如果要想用Robomongo,又想數據庫不能隨便被別人連接上可以嗎?當然可以,只需開啟身份認證。
默認情況下mongodb是關閉身份認證的,開啟身份認證需如下步驟:
1、修改mongodb配置文件
vi /etc/mongod.conf // 編輯mongod.conf文件 security: // 去掉security前面# authorization: enabled // 添加這句開啟認證
在網上看了很多教程關于開啟身份認證的,使用auth=true發現不行,后來才知道是教程太老了,配置字段都變了,坑的我找了很長時間。
2、添加超級管理員
默認Mongodb是沒有管理員等用戶信息的,開啟身份認證是需要添加用戶信息驗證。首先添加的應該是admin數據庫里的管理員賬號,他用于其他數據庫的用戶添加、修改、刪除等一些權限控制。
執行如下操作:
mongo // 本地連接數據庫 use admin // 切換到admin數據庫,沒有會自動添加 db.createUser( // 創建管理員用戶 { user: "admin", // 賬號 pwd: "admin", // 密碼 roles: [ { role: "root", db: "admin" } ] // 角色:超級管理員,數據庫:admin } )
創建成功后會輸出Successfully added user。。。
重啟mongodb
systemctl restart mongod.service
執行
mongo // 連接數據庫 show dbs // 顯示所有數據庫,這步會報錯,說沒有通過驗證。 use admin // 切換到admin數據庫 db.auth('admin','admin') // 用上面設置的賬號密碼登錄
如果返回 '1'表示驗證成功, 如果是 '0' 表示驗證失敗
身份驗證開啟了,在window端cmd中執行下面命令
mongo 阿里云外網地址 // 發現連接失敗,因為沒有通過驗證。
如果執行下面這句
mongo 阿里云外網地址 -u "admin" -p "admin" --authenticationDatabase admin
// 發現連接成功
Robomongo身份認證連接:
切換到Authorization選項,選中Perform authorization,填上Database, user name, password,就可以連接成功了。
mongodb不像mysql,驗證的用戶對所有數據庫都有讀寫的能力,不同的庫需要配置相關的用戶信息才能對該庫進行讀寫。比如有個myblog的數據庫,需要對其有讀寫的能力,新建一個具有讀寫能力的用戶。
命令如下:
mongo // 連接數據庫 use admin // 切換到admin數據庫 db.auth('admin','admin') // auth驗證登錄 use myblog // 切換到myblog數據庫 db.createUser( // 創建普通用戶 { user: "keen", // 賬號 pwd: "123", // 密碼 roles: [ { role: "readWrite", db: "myblog" } ] // 角色:讀寫,數據庫:myblog } ) db.auth('keen', '123') // 使用新建用戶keen驗證登錄
到此整個mongodb配置結束了,關于mongodb的身份認證,以及權限控制,可以看看這篇文章,寫的很詳細。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。