在Debian系統上,首先需要安裝MongoDB官方版本。執行以下命令完成安裝:
sudo apt update
sudo apt install -y mongodb-org
安裝完成后,啟動MongoDB服務并設置開機自啟:
sudo systemctl start mongod
sudo systemctl enable mongod
MongoDB默認未啟用身份驗證,需通過配置文件開啟。編輯配置文件:
sudo nano /etc/mongod.conf
找到security
section,添加或修改以下內容:
security:
authorization: enabled
保存文件后,重啟MongoDB服務使配置生效:
sudo systemctl restart mongod
管理員賬戶用于管理所有數據庫用戶及權限,需在admin
數據庫中創建。連接MongoDB shell:
mongo
切換至admin
數據庫:
use admin
創建管理員用戶(以root
角色為例,擁有最高權限):
db.createUser({
user: "adminUser",
pwd: "StrongAdminPassword123!",
roles: [{ role: "root", db: "admin" }]
})
提示:
root
角色為內置最高權限角色,包含userAdminAnyDatabase
、readWriteAnyDatabase
等多個權限。生產環境中建議使用此角色或根據需求組合其他角色。
根據業務需求,為特定數據庫創建用戶并分配權限。以下為常見場景示例:
假設需為mydb
數據庫創建myuser
用戶,賦予讀寫權限:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切換至目標數據庫:
use mydb
創建用戶:
db.createUser({
user: "myuser",
pwd: "UserPassword456!",
roles: [{ role: "readWrite", db: "mydb" }]
})
若需為用戶分配只讀權限,可將角色改為read
:
db.createUser({
user: "readonlyUser",
pwd: "ReadOnlyPassword789!",
roles: [{ role: "read", db: "mydb" }]
})
如需更細粒度的權限(如僅允許插入數據),可使用內置角色的組合或自定義角色。例如,賦予insert
權限:
db.createUser({
user: "insertOnlyUser",
pwd: "InsertOnlyPass123!",
roles: [{ role: "insert", db: "mydb" }]
})
創建用戶后,需驗證其權限是否符合預期。
使用管理員賬戶登錄并嘗試創建用戶:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切換至admin
數據庫,創建測試用戶:
use admin
db.createUser({ user: "testUser", pwd: "TestPass123", roles: [{ role: "read", db: "admin" }] })
若創建成功,說明管理員權限有效。
使用普通用戶登錄并嘗試操作:
mongo -u myuser -p UserPassword456 --authenticationDatabase mydb
切換至mydb
數據庫,嘗試插入數據:
use mydb
db.myCollection.insertOne({ name: "Test Data" })
若插入成功,說明readWrite
權限配置正確。若嘗試執行db.dropDatabase()
等管理操作,應返回權限不足錯誤。
若需調整用戶權限,可使用grantRolesToUser
添加角色或revokeRolesFromUser
移除角色。例如,為用戶添加dbAdmin
角色:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切換至目標數據庫:
use mydb
添加角色:
db.grantRolesToUser("myuser", [{ role: "dbAdmin", db: "mydb" }])
若需刪除用戶,可使用dropUser
命令:
use mydb
db.dropUser("myuser")
auditLog
)。通過以上步驟,可在Debian系統上完成MongoDB的權限管理配置,保障數據庫的安全性與數據的完整性。