python_note
  • Introduction
  • My Python
    • Anaconda
    • argparse
    • datetime
    • json
    • logging
    • numpy
    • open
    • openCC
    • pandas & csv
    • Socket & SocketServer
    • re
    • yaml
    • smtp
    • 物件操作
    • unittest
    • 線程
    • prettytable
    • IO
    • pycurl
    • sys
    • pickle
    • auto-python-to-exe
    • cython
    • nuitka
  • Crawler
    • Urllib & Requests
      • User-agent
      • Percent-Encoding
      • mail code
    • Selenium
    • TCP & UDP
    • 控制字符(control character)
  • Web Development
    • Flask
      • RESTful api
      • Template
      • blueprint
    • Django
      • 環境佈署(windows)
    • 檢查Port
    • Apache
    • 使用者行為
    • jQuery
    • 壓力測試
    • DataTable
    • Bootstrap
    • CSS
    • JavaScript
    • Chart.js
  • Deep Learning
    • Keras 設定
    • RNN
    • LSTM
  • Test
    • T-Test
  • 資料結構
    • Hash
    • 時間複雜度
  • NLP
    • N-gram
    • CKIP
    • 中文轉數字
    • CRF
    • Mutual Information
    • 模糊比對
  • Linebot
    • Heroku
    • 圖文選單
    • channel
  • Linux
    • 常用指令
    • shell script
    • sshfs
    • ssh
    • nodejs & npm
    • debug
  • GCP
    • app engine
    • ssh(gcp)
    • gsutil
    • brabrabra
    • Load Balancer
    • k8s
  • Database
    • mysql
    • elasticsearch
      • Query
      • Backup and Restore
      • elasticdump
      • es2csv
      • ELK
    • mongodb
      • install
      • authentication
      • pymongo
    • sql server
  • go
    • Swarm
  • Docker
    • Kitematic
    • Dockerfile
    • Swarm
  • Git
  • 其他
    • USB軟體保護
    • Windows效能監視器
  • Blockchain
Powered by GitBook
On this page
  • 名詞概念對應
  • 權限設定
  • 1. 啟動mongo shell
  • 2. 進入database(admin)
  • 3. 建立屬於admin的SuperUser
  • 4. 配置新帳號權限
  • 5. 啟動驗證機制並重新啟動服務
  • 6. 測試登入

Was this helpful?

  1. Database
  2. mongodb

authentication

PreviousinstallNextpymongo

Last updated 5 years ago

Was this helpful?

名詞概念對應

SQL

MongoDB

database

database

table

collection

row

document

column

field

權限設定

mongodb安裝完成後,預設會建立一個名為admin的database,可藉由mongo shell操作

預設是無權限規範,需要自行手動設定

角色說明:

角色名稱

簡介

Read

允許用戶讀取指定數據庫

readWrite

允許用戶讀寫指定數據庫

dbAdmin

允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile

userAdmin

允許用戶向system.users集合寫入,可以找指定數據庫裡創建、刪除和管理用戶

clusterAdmin

只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限

readAnyDatabase

只在admin數據庫中可用,賦予用戶所有數據庫的讀權限

readWriteAnyDatabase

只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限

userAdminAnyDatabase

只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限

dbAdminAnyDatabase

只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限

root

只在admin數據庫中可用。超級賬號,超級權限

1. 啟動mongo shell

ubuntu:任何目錄皆可輸入

mongo

若啟動失敗,嘗試重啟mongod服務

sudo service start mongod

或

sudo service restart mongod

2. 進入database(admin)

use admin

3. 建立屬於admin的SuperUser

db.createUser( {user: "my_superuser", pwd: "icanpass", roles: [{role: "userAdminAnyDatabase", db: "admin"} ] } );

必須先有此帳號,才能進一步配置新帳號權限

4. 配置新帳號權限

db.createUser( {user: "new_user", pwd: "password", roles: [{role: "dbOwner", db: "db_name"}] });

db_name就是此帳號所需要控管的db名稱

5. 啟動驗證機制並重新啟動服務

啟動驗證機制:

mongo --auth

或修改/etc/mongod.conf,新增最後一行

security:
  authorization: enabled

或修改/etc/mongod.conf,新增最後一行

auth=true

最後重新啟動mongod服務

sudo service restart mongod

6. 測試登入

需要用新的使用者資訊來登入

mongo --port 27017 -u <SuperUserName> -p "xx" --authenticationDatabase "admin"
mongo -u <SuperUserName> -p --authenticationDatabase admin

參考資料:

https://www.w3schools.com/python/python_mongodb_create_db.asp
https://segmentfault.com/a/1190000015603831
https://www.facebook.com/notes/%E9%84%AD%E6%A5%AD%E8%96%B0/%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98mongodb-user-role%E8%A8%AD%E5%AE%9A%E7%AD%86%E8%A8%98/10152402345234468/
https://bowwow.tips/post/20160531/
https://www.kdzone.net/2017/04/mongodb-3.html
https://tunin-tunintsai.blogspot.com/2017/02/mongodb.html