mongodb 設置用戶密碼權限

1 設置管理員帳戶html

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

mongodb中的用戶是基於身份role的,該管理員帳戶的 role是 userAdminAnyDatabase。 ‘userAdmin’表明用戶管理身份,’AnyDatabase’ 表明能夠管理任何數據庫。python

2 驗證mongodb

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

若是返回1,則表示成功。數據庫

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

sudo vi /etc/mongod.conf

#security:
security:
  authorization: enabled函數

4 重啓mongodb this

sudo service mongod restart

5 建立普通用戶spa

進入mongodb,用第3步的 管理員帳戶登陸,用該帳戶建立其餘數據庫管理員帳號rest

  +先進行管理員認證code

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

相關文章
相關標籤/搜索