mongodb 連接


1、docker mongo

1.1、docker pull mongo
1.2、docker run --name mongo -p 27017:27017 -d mongo --auth
1.3、進入bash:docker exec -it mongo bin/bash
1.4、mongo目錄:/usr/bin/ 程序名:./mongo

2、創建帳戶

mongo --port 27017 use admin db.createUser( { user: "root", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 

管理員創建成功,現在擁有了用戶管理員
用戶名:root
密碼:123456

數據庫:admin

 

 

 

3、配置springboot

 data:
mongodb:
# uri: mongodb://foo:123456@192.168.56.101:27017/foo
uri: mongodb://192.168.56.101:27017/admin
username: root
password: 123456



 

1. 禁止公網訪問 Mongodb 端口

1.1 網絡配置

由於網絡配置因人而異,需要根據自己實際環境進行配置,不作冗述。大致可以從以下方面禁止。

  • 在路由器中關閉端口轉發
  • 防火牆 iptables 禁止訪問

1.2 驗證端口能否訪問方式

在外網機器命令行中運行

telnet your.machine.open.ip 27017

2. 啟用驗證

2.1 創建用戶管理員賬戶

新建MongoDB服務:

mongod --port 27017 --dbpath /data/db1 

開啟mongodb客戶端shell:

mongo --port 27017 use admin db.createUser( { user: "adminUser", pwd: "adminPass", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 

管理員創建成功,現在擁有了用戶管理員
用戶名:adminUser
密碼:adminPass
然后,斷開 mongodb 連接, 關閉數據庫

2.2 Mongodb 用戶驗證登陸

啟動帶訪問控制的 Mongodb

mongod --auth --port 27017 --dbpath /data/db1 

現在有兩種方式進行用戶身份的驗證

  • 第一種 (類似 MySql)
    客戶端連接時,指定用戶名,密碼,db名稱
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
  • 第二種
    客戶端連接后,再進行驗證
mongo --port 27017 use admin db.auth("adminUser", "adminPass") // 輸出 1 表示驗證成功 

2.3 創建普通用戶

過程類似創建管理員賬戶,只是 role 有所不同

use foo db.createUser( { user: "simpleUser", pwd: "simplePass", roles: [ { role: "readWrite", db: "foo" }, { role: "read", db: "bar" } ] } ) 

現在我們有了一個普通用戶
用戶名:simpleUser
密碼:simplePass
權限:讀寫數據庫 foo, 只讀數據庫 bar。

注意
use foo表示用戶在 foo 庫中創建,就一定要 foo 庫驗證身份,即用戶的信息跟隨隨數據庫。比如上述 simpleUser 雖然有 bar 庫的讀取權限,但是一定要先在 foo 庫進行身份驗證,直接訪問會提示驗證失敗。

use foo db.auth("simpleUser", "simplePass") use bar show collections 

2.4 內建角色

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

3、
 


免責聲明!

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



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