官網下載5.0.3, 並安裝. Windows下安裝后並選擇使用windows 服務來啟動mongo服務.
======================================
免密登錄
======================================
初次登錄, 打開 mongo.exe 客戶端, 不需要輸入用戶密碼就能登錄, 安全性不高, 后面介紹如何加上安全認證.
在mongo.exe中執行show dbs命令, 能顯示有三個數據庫, 說明登錄成功.
查看 mongo 的配置文件mongod.cfg
注意默認綁定IP 是127.0.0.1, 如果要在局域網內訪問mongo服務, 需要修改IP為 0.0.0.1, 即綁定所有的網卡.
======================================
創建賬號
======================================
創建一個mongoDB 的超級管理員root賬號
先切到admin db下, 賬號名設定為 root, 角色也選 root.
use admin db.createUser({user:'root', pwd: '123456', roles:['root']})
使用 db.auth() 方法可以驗證用戶密碼是否OK.
在test db 下的test_user/test_guest/test_owner 賬號
use test db.createUser({user:'test_user', pwd: '123456', roles:[{db:'test', role:'readWrite'}]}) db.createUser({user:'test_guest', pwd: '123456', roles:[{db:'test', role:'read'}]}) db.createUser({user:'test_owner', pwd: '123456', roles:[{db:'test', role:'dbOwner'}]})
在 admin 數據庫的 system.users 集合中, 可以查看所有用戶信息.
======================================
啟用驗證方式登錄
======================================
mongo 的配置文件mongod.cfg 增加 auth 選項
mongod.cfg新版使用yml格式, 配置如下:
security:
authorization: enabled
mongod.cfg老版文件, 配置如下:
auth=true
再次啟動mongo.exe客戶端, 運行 show dbs, 沒有列出任何數據庫, 可見並未進行真正登錄成功
mongodb.exe 客戶端使用賬號密碼方式登錄, 以root賬號登錄:
.\mongo.exe mongodb://localhost:27017/admin -u root -p 123456
端口后的/db, 這里的db和應用程序連接url的authSource含義相同, 用來指定在哪個庫驗證用戶. 雖然 admin 庫下存儲所有賬號的用戶名和密碼, 但 authSource 參數不一定就是 admin 庫, 准確地說: 在哪個庫下創建用戶, authSource 就是那個庫.
root 賬號雖然能管理任何數據庫, 但不能直接登錄test 數據庫.
test_owner 賬號登錄:
======================================
應用程序url寫法:
======================================
mongodb://root:123456@127.0.0.1:27017/admin?authSource=admin&w=majority&wTimeoutMS=5000&journal=true&readPreference=primary&retryWrites=true mongodb://test_owner:123456@127.0.0.1:27017/test?authSource=test&w=majority&wTimeoutMS=5000&journal=true&readPreference=primary&retryWrites=true
- authSource 參數, 用來指定在哪個庫驗證用戶. 雖然 admin 庫下存儲所有賬號的用戶名和密碼, 但 authSource 參數不一定就是 admin 庫, 准確地說: 在哪個庫下創建用戶, authSource 就是那個庫.
- retryWrites 采用可重試寫入方式, 設定 retryWrites 為true 后, writeConcern 參數配不能設置為 0
- w 參數即 writeConcern, 設置為 majority, 保證每次寫操作都成功寫入到復制集中的多數服務器中, 數據安全性較好.
- j 參數即 journal HAL日志, j=true, 落盤后返回寫操作, j=false, 刷到內存后即返回寫操作.
- wTimeoutMS 設定 writeConcern 的超時時間, 單位毫秒, 如果沒有設定, 則寫操作可能會無限阻塞等待.
- readPreference 參數, 設定讀操作選用節點的策略, 默認為只從主節點讀取, 可選項有:
- primary (只主)只從 primary 節點讀數據,這個是默認設置
- primaryPreferred (先主后從)優先從 primary 讀取,primary 不可服務,從 secondary 讀
- secondary (只從)只從 scondary 節點讀數據
- secondaryPreferred (先從后主)優先從 secondary 讀取,沒有 secondary 成員時,從 primary 讀取
- nearest (就近)根據網絡距離就近讀取,根據客戶端與服務端的PingTime實現
======================================
MongoDB for VS Code插件的使用
======================================
MongoDB 官方的VS code插件, 可以編寫playground 文件, 語法是 js, 可以編寫一些CRUD的腳本,
如果是使用Run selected line from playground 命令, 選擇部分要包含 use("test") 代碼來切換到目標DB, 否則都是在默認db中執行.
另外, 輸出窗口也切換到 Playground output, 這樣我們能看到一些自己的print()結果.
======================================
mongodb role類型
======================================
數據庫用戶角色(Database User Roles):
read:授予User只讀數據的權限
readWrite:授予User讀寫數據的權限
數據庫管理角色(Database Administration Roles):
dbAdmin:在當前DB中執行管理操作
dbOwner:在當前DB中執行任意操作
userAdmin:在當前DB中管理User
備份和還原角色(Backup and Restoration Roles):
backup
restore
跨庫角色(All-Database Roles):
readAnyDatabase:授予在所有數據庫上讀取數據的權限
readWriteAnyDatabase:授予在所有數據庫上讀寫數據的權限
userAdminAnyDatabase:授予在所有數據庫上管理User的權限
dbAdminAnyDatabase:授予管理所有數據庫的權限
集群管理角色(Cluster Administration Roles):
clusterAdmin:授予管理集群的最高權限
clusterManager:授予管理和監控集群的權限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor:授予監控集群的權限,對監控工具具有readonly的權限
hostManager:管理Server
超級角色(super master Roles)
root :超級賬戶和權限,只在admin中可用
======================================
參考
======================================