MongoDB快速入門學習筆記7 MongoDB的使用者管理操作

來源:互聯網
上載者:User

標籤:

1、修改啟動MongoDB時要求使用者驗證
加參數 --auth 即可。
現在我們把MongoDB服務刪除,再重新添加服務

mongod --dbpath "D:\work\MongoDB\data" --logpath "D:\work\MongoDB\log\mongodb.log" --install --serviceName "MongoDB" --auth

 

2、建立使用者,並使用建立的使用者登入
開啟shell操作介面,預設test資料,再查看所有資料庫,發現報錯,因為沒有使用者驗證。
使用db.auth("user","pwd")進行使用者驗證。
user:使用者名稱
pwd:密碼


因為資料庫中沒有使用者,所以需要先使用無使用者驗證的方式啟動資料,在admin資料庫下建立使用者。
db.createUser({user:"", pwd:"", roles:[{role:"", db:""}]})
在當前資料庫下建立一個使用者
user:使用者名稱
pwd:密碼
roles:角色資訊
[role:角色名稱, db:對指定資料庫的操作]

> db.createUser({user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})Successfully added user: {"user" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]}

 

在使用使用者驗證的方式啟動資料庫,在資料庫admin中,使用admin登入
> db.auth("admin","admin")
1

狀態1表示驗證成功,0表示驗證失敗

建立使用者預設給當前使用的資料下建立使用者,
例如:當前使用的資料是admin,在admin資料下建立使用者
db.createUser({user:"zyh", pwd:"zyh", roles:[{role:"readWrite", db:"zyhdb"}]})
在admin資料庫下使用zyh登入,可讀寫zyhdb的collection。
當在zyhdb下,無法使用zyh登入,因為使用者zyh是在admin資料庫下。

 

3、查看當前資料下的使用者
show users 顯示當前資料庫下所有的使用者
使用有使用者系統管理權限的使用者登入才能看見,例如使用zyh登入後,執行會報錯;使用admin登入後,顯示使用者

> db.auth("zyh","zyh")1> show users2016-06-01T20:32:30.639+0800 E QUERY [thread1] Error: not authorized on admin to execute command { usersInfo: 1.0 } :[email protected]/mongo/shell/utils.js:25:13[email protected]/mongo/shell/db.js:1523:1[email protected]/mongo/shell/utils.js:743:9[email protected]/mongo/shell/utils.js:650:15@(shellhelp2):1:1> db.auth("admin","admin")1> show users{"_id" : "admin.admin","user" : "admin","db" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]}{"_id" : "admin.zyh","user" : "zyh","db" : "admin","roles" : [{"role" : "readWrite","db" : "zyhdb"}]}

 

還可以使用db.getUsers()查看所有的使用者
使用db.getUser("user")查詢指定使用者的具體資訊

 

4、修改使用者資訊
db.changeUserPassword("user", "newpwd"),修改密碼
user:使用者名稱
newpwd:新的密碼


db.updateUser("user", {roles:[{role:"", db:""}]})
修改使用者資訊

db.grantRolesToUser("user", [{role:"", db:""}])
追加角色

db.revokeRolesFromUser("user", [{role:"", db:""}])
取消角色

 

5、刪除使用者
db.dropUser("user") 刪除指定使用者

db.dropAllUsers() 刪除當前資料下所有使用者

 

附:常用內建角色說明
資料庫使用者角色(每個資料庫都有的角色)
read對non-system集合的讀取許可權,以及以下system集合的讀取許可權:system.indexes,system.js,system.namespaces
readWrite對non-system集合的讀寫權限,以及system.js上的讀寫權限
 
 
資料庫管理角色(每個資料庫都包含的資料管理角色)
dbAdmin完成管理性任務的許可權,比如schema相關任務、索引、統計資訊收集。不能用於系統管理使用者和角色
dbOwner管理資料庫需要的所有許可權。包含(readWrite、dbAdmin、userAdmin角色的許可權)
userAdmin在當前資料庫建立和修改角色和使用者的許可權
 
 
叢集管理角色
admin資料庫包含以下角色用於管理整個系統,而不是只針對單個資料庫
clusterAmin提供叢集管理的最大許可權。包含了clusterManager、clusterMonitor、hostManager角色的許可權
clusterManager管理和監控叢集,可以訪問local和config資料庫。
clusterMonitor對叢集的讀許可權
hostManager管理和健康servers
 
 
備份與還原角色
admin資料庫包含以下角色用於備份與還原資料
backup備份許可權
restore還原許可權
 
 
all-database roles
admin資料提供以下角色,對所有資料庫都有效。
readAnyDatabase提供對所有資料庫的讀許可權
readWriteAnyDatabase提供對所有資料庫的寫入權限
userAdminAnyDatabase提供對所有資料庫使用者的系統管理權限
dbAdminAnyDatabase對所有資料庫的dbAdmin許可權
 
 
超級角色
角色說明
root擁有最高許可權

另外角色也可以自訂設定。

MongoDB快速入門學習筆記7 MongoDB的使用者管理操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.