Docker部署安裝MongoDB


DOCKER部署安裝MONGODB

下載鏡像

docker pull registry.docker-cn.com/library/mongo

創建本地數據文件夾

mkdir /data/mongodb0

啟動MongoDB容器

docker run --name mongodb-server0 -v /data/mongodb0:/data/db -p 27017:27017 -d 鏡像ID --auth

-v后面的參數表示把數據文件掛載到宿主機的路徑
-p把mongo端口映射到宿主機的指定端口
--auth表示連接mongodb需要授權

為MongoDB添加管理員用戶

進入MongoDB控制台
docker exec -it some-mongo mongo admin

添加用戶命令

db.createUser({ user: '1iURI', pwd: 'rootroot', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

MongoDB用戶權限

內建的角色

數據庫用戶角色:read、readWrite;
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root // 這里還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
內部角色:__system

角色說明:

Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限

副本集形式部署

如果你想單點連接,那么從這里往下不需要看了,如果你想搭建MongoDB副本集,那么請移除MongoDB的所有docker容器,重新按照下面的方式啟動容器和設置

0. 創建用於Auth的Keyfile

mkdir -p /data/mongodb0_conf
cd /data/mongodb0_conf
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
chown 999 mongodb_keyfile

1. 啟動三個Mongodb進程

docker run --name mongodb-server0 \
--restart always \
-v /data/mongodb0:/data/db \
-v /data/mongodb0_conf:/opt/keyfile \
-p 27017:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--replSet exuehui-mongo-set

docker run --name mongodb-server1 \
--restart always \
-v /data/mongodb1:/data/db \
-v /data/mongodb1_conf:/opt/keyfile \
-p 27018:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--replSet exuehui-mongo-set

docker run --name mongodb-server0 \
--restart always \
-v /data/mongodb0:/data/db \
-v /data/mongodb0_conf:/opt/keyfile \
-p 37017:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--replSet exuehui-mongo-set

2 進入 Mongodb Docker

docker run -it --name mongo-client mongo /bin/bash

3 進入要作為Master數據庫的 Mongodb Shell

mongo 192.168.31.206:27017/admin

4 初始化副本集, _id和啟動時設置的ReplSet參數相同

rs.initiate({ _id:"exuehui-mongo-set", members:[
{_id:0,host:"home.lemonsoft.vip:27017"}, {_id:1,host:"home.lemonsoft.vip:27018"}, {_id:2,host:"home.lemonsoft.vip:37017"}
]})

5 查看副本集狀態

rs.status()

6.創建權限用戶

use admin;
db.createUser({ user: '1iURI', pwd: 'rootroot', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

use exuehui
db.createUser({ user: '1iURI-exuehui', pwd: 'rootroot', roles: [ { role: "readWrite", db: "exuehui" } ] });

7. 重新運行容器,並添加--Auth

docker run --name mongodb-server0 \
--restart always \
-v /data/mongodb0:/data/db \
-v /data/mongodb0_conf:/opt/keyfile \
-p 27017:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--auth \
--replSet exuehui-mongo-set

docker run --name mongodb-server1 \
--restart always \
-v /data/mongodb1:/data/db \
-v /data/mongodb1_conf:/opt/keyfile \
-p 27018:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--auth \
--replSet exuehui-mongo-set

docker run --name mongodb-server0 \
--restart always \
-v /data/mongodb0:/data/db \
-v /data/mongodb0_conf:/opt/keyfile \
-p 37017:27017 \
-d d22 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--auth \
--replSet exuehui-mongo-set


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM