国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法

2024-09-01 13:51:15
字體:
供稿:網(wǎng)友

基于Docker部署一個數(shù)據(jù)庫實(shí)例通常比直接在服務(wù)器上安裝數(shù)據(jù)庫還要簡單,Gevin在開發(fā)環(huán)境中經(jīng)常使用基于docker的數(shù)據(jù)庫服務(wù),docker也漸漸成為Gevin在Linux上安裝MongoDB的首選方式,由于MongoDB默認(rèn)是不用通過認(rèn)證就能直接連接的,出于安全考慮,在公網(wǎng)上部署MongoDB時,務(wù)必設(shè)置authentication機(jī)制,以避免類似 "黑客贖金" 問題的發(fā)生。

那么,基于Docker拉起的MongoDB,如何實(shí)現(xiàn)通過用戶名密碼訪問指定數(shù)據(jù)庫呢?方法很簡單,但前提是要了解MongoDB授權(quán)訪問的機(jī)制,參考資料如下:

Enable Auth
Authentication
Role-Based Access Control

只要了解MongoDB授權(quán)訪問機(jī)制,直接按下面步驟一步步執(zhí)行就可以了。

1、創(chuàng)建MongoDB實(shí)例

為了少寫幾個命令,Gevin使用Docker Compose來創(chuàng)建MongoDB實(shí)例:

version: '2'services: mongo:  # restart: always  image: mongo:3.2  command: [--auth]  ports:   - "37017:27017"  volumes:   - /data/db

運(yùn)行如下命令:

docker-compose up -d#----------# Result:#----------# Creating mongodb_mongo_1docker-compose ps#----------# Result:#----------#   Name        Command     State      Ports# --------------------------------------------------------------------------# mongodb_mongo_1  /entrypoint.sh --auth  Up   0.0.0.0:37017->27017/tcp

2、創(chuàng)建用戶管理員

首先要進(jìn)入MongoDB容器內(nèi)部,連上MongoDB,并切換到 admin 數(shù)據(jù)庫,這步可以通過下面命令完成:

docker exec -it mongodb_mongo_1 mongo admin#----------# Result:#----------# MongoDB shell version: 3.2.12# connecting to: admin# Welcome to the MongoDB shell.# For interactive help, type "help".# For more comprehensive documentation, see#  http://docs.mongodb.org/# Questions? Try the support group#  http://groups.google.com/group/mongodb-user

然后創(chuàng)建一個user administrator:

db.createUser({   user: 'mongo-admin',   pwd: 'admin-initial-password',   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });#----------# Result:#----------Successfully added user: {  "user" : "mongo-admin",  "roles" : [    {      "role" : "userAdminAnyDatabase",      "db" : "admin"    }  ]}

3、創(chuàng)建訪問指定數(shù)據(jù)庫的用戶

創(chuàng)建了user administrator后,需要退出mongodb,并重新連接,然后用user administrator 訪問admin數(shù)據(jù)庫,并為目標(biāo)數(shù)據(jù)庫創(chuàng)建目標(biāo)用戶,其具體步驟如下:

(1)重新連接MongoDB數(shù)據(jù)庫

退出容器,重新用下面命令進(jìn)入容器即可:

docker exec -it mongodb_mongo_1 mongo admin#----------# Result:#----------MongoDB shell version: 3.2.12connecting to: admin

(2)授權(quán)登錄admin

db.auth("mongo-admin","admin-initial-password")

(3)創(chuàng)建訪問指定數(shù)據(jù)庫的用戶

# Step1: switch to the specified database:use octblog# Step2: create a userdb.createUser( {  user: "gevin",  pwd: "gevin",  roles: [ { role: "readWrite", db: "octblog" },       { role: "readWrite", db: "octblog-log" } ] })#----------# Result:#----------#Successfully added user: {#  "user" : "gevin",#  "roles" : [#    {#      "role" : "readWrite",#      "db" : "octblog"#    },#    {#      "role" : "readWrite",#      "db" : "octblog-log"#    }#  ]#}

這一步的目標(biāo)是為 octblog 這個數(shù)據(jù)庫創(chuàng)建一個授權(quán)訪問用戶,首先要從 admin 數(shù)據(jù)庫切換到 octblog 數(shù)據(jù)庫,然后才能為 octblog 添加授權(quán)訪問用戶

注:

上面所以操作均為user administrator執(zhí)行的,即第二步創(chuàng)建的 mongo-admin user administrator的作用是管理用戶,MongoDB下的每個數(shù)據(jù)庫,用戶都被它管理,除此外,它基本沒什么更多權(quán)限做其他事情MongoDB沒有通常意義的超級用戶的概念,octblog的授權(quán)用戶只能被user administrator創(chuàng)建,而user administrator只能登陸admin數(shù)據(jù)庫,所以才會有上面(2)、(3)兩步的麻煩。

以上所述是小編給大家介紹的基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!

 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 财经| 准格尔旗| 柞水县| 二手房| 霍山县| 紫金县| 八宿县| 漯河市| 库尔勒市| 黔江区| 绍兴县| 余庆县| 五原县| 万宁市| 城固县| 湘西| 海宁市| 伊金霍洛旗| 静乐县| 绥阳县| 深水埗区| 皮山县| 衡阳市| 佛冈县| 井冈山市| 安多县| 柘城县| 揭阳市| 通化市| 海安县| 库尔勒市| 互助| 台南市| 苏尼特左旗| 景洪市| 禄劝| 永年县| 香港 | 泸西县| 呼伦贝尔市| 宁都县|