MongoDB 只讀權限設置

微信公衆號:[前端一鍋煮]
一點技術、一點思考。
問題或建議,請公衆號留言。

相關命令

查看本機 mongodb 版本:mongo -version前端

查看本機運行的 mongodb:ps aux | grep mongodblinux

鏈接本機數據庫:mongo localhost:27017mongodb

用帳號密碼鏈接本機數據庫:mongo -port 27017 -u 'admin' -p 'admin_root_test'數據庫

顯示數據庫列表:show dbsbash

切換/建立數據庫:use mytest微信

刪除當前數據庫:db.dropDatabase()函數

建立集合:db.createCollection('book')ui

顯示當前全部用戶:show usersrest

刪除用戶:db.dropUser('myread')code

殺死運行的 mongodb:kill pid

只讀權限設置

  1. 啓動 mongodb 服務

mac:mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork

linux:systemctl start mongodservice mongod start

  1. 進入命令

mongo localhost:27017

  1. 建立管理員帳號
use admin
db.createUser({user:'admin', pwd:'admin_root_test',roles:[{ role: 'root', db: 'admin' }]})
  1. 關閉 mongodb

db.adminCommand( { shutdown: 1 } )

或者

ps -ef | grep mongodb // 查看 momgodb pid
kill pid
  1. 用權限認證重開

mongod --auth --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork

或者

vi /etc/mongod.conf
security:
  authorization: enabled
  1. 再次進入命令

mongo -port 27017 -u 'admin' -p 'admin_root_test'

  1. 建立只讀用戶
use mytest // 建立數據庫
db.createCollection('book') // 建立集合,以方便 show dbs 能顯示數據庫
db.createUser({ user: 'myread', pwd: 'myread_pwd', roles: [{ role: 'read', db: 'mytest' }] })

角色權限解讀

Built-In Roles(內置角色):

  1. 數據庫用戶角色:read、readWrite。
  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin。
  3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager。
  4. 備份恢復角色:backup、restore。
  5. 全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase。
  6. 超級用戶角色:root 還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)。
  7. 內部角色:__system。

具體角色:

  • Read:容許用戶讀取指定數據庫。
  • readWrite:容許用戶讀寫指定數據庫。
  • dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問。
  • userAdmin:容許用戶向 system.users 集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶。
  • clusterAdmin:只在 admin 數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
  • readAnyDatabase:只在 admin 數據庫中可用,賦予用戶全部數據庫的讀權限。
  • readWriteAnyDatabase:只在 admin 數據庫中可用,賦予用戶全部數據庫的讀寫權限。
  • userAdminAnyDatabase:只在 admin 數據庫中可用,賦予用戶全部數據庫的 userAdmin 權限。
  • dbAdminAnyDatabase:只在 admin 數據庫中可用,賦予用戶全部數據庫的 dbAdmin 權限。
  • root:只在 admi n數據庫中可用。超級帳號,超級權限。
相關文章
相關標籤/搜索