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 表明數據庫全部者角色,擁有最高該數據庫最高權限。好比新建索引等
#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()
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