mongodb 設置用戶密碼權限


1 設置管理員賬戶

use admin
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

mongodb中的用戶是基於身份role的,該管理員賬戶的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用戶管理身份,’AnyDatabase’ 代表可以管理任何數據庫。

2 驗證

db.auth("useradmin", "adminpassword")

如果返回1,則表示成功。

3 修改配置文件(注意縮進)

sudo vi /etc/mongod.conf

#security:
security:
  authorization: enabled

4 重啟mongodb 

sudo service mongod restart

5 創建普通用戶

進入mongodb,用第3步的 管理員賬戶登錄,用該賬戶創建其他數據庫管理員賬號

  +先進行管理員認證

use admin
db.auth("useradmin", "adminpassword")

  +設置其他庫的賬號密碼及權限

use yourdatabase
db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })

  rote:dbOwner 代表數據庫所有者角色,擁有最高該數據庫最高權限。比如新建索引等

  

  • Read:允許用戶讀取指定數據庫
  • readWrite:允許用戶讀寫指定數據庫
  • dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
  • userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶
  • clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
  • readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
  • readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
  • userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
  • dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
  • root:只在admin數據庫中可用。超級賬號,超級權限
6 python 連接腳本
#coding=utf-8
#導入模塊
from pymongo import MongoClient 
#建立連接
client=MongoClient("localhost",27017)
#數據庫名admin
db=client.admin
#認證用戶密碼
db.authenticate('root','123456')
#創建集合和數據
db.test.insert({"name":"this is test"})
col=db.test
#打印數據輸出
for item in col.find():
    print item
#關閉連接
client.close()

 

7 注意
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
use foo
db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
  }
)
現在我們有了一個普通用戶
用戶名:simpleUser
密碼:simplePass
權限:讀寫數據庫 foo, 只讀數據庫 bar。

注意
use foo表示用戶在 foo 庫中創建,就一定要 foo 庫驗證身份,即用戶的信息跟隨隨數據庫。
比如上述 simpleUser 雖然有 bar 庫的讀取權限,但是一定要先在 foo 庫進行身份驗證,直接訪問會提示驗證失敗。 use foo db.auth(
"simpleUser", "simplePass") use bar show collections 還有一點需要注意,如果 admin 庫沒有任何用戶的話,即使在其他數據庫中創建了用戶,啟用身份驗證,默認的連接方式依然會有超級權限

 

參考:

https://www.2cto.com/database/201802/724340.html

https://www.jianshu.com/p/79caa1cc49a5

https://blog.51cto.com/1767340368/2092960


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM