authentication

https://www.w3schools.com/python/python_mongodb_create_db.asp

名詞概念對應

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://segmentfault.com/a/1190000015603831https://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

Last updated