MongoDB 3.0.8 許可權管理
MongoDB 3.0雖然管理上有所改變,但是還是沒有太明顯。
千萬不要相信百度上各種,3.0起沒有root使用者,授個userAdminAnyDatabase角色許可權的使用者就是root使用者。
不然用客戶端連線會報下面一些錯誤
mongo shell 中db.auth 授權後刪除普通資料庫報錯
> db.dropDatabase()
{
"ok" : 0,
"errmsg" : "not authorized on guo to execute command { dropDatabase: 1.0 }",
"code" : 13
}
這是因為userAdminAnyDatabase不包括刪除資料庫許可權
客戶端連線檢視資料包錯
{
"code" : 13,
"errmsg" : "not authorized on admin to execute command { listCollections: true, filter: {}, cursor: {} }",
"message" : "not authorized on admin to execute command { listCollections: true, filter: {}, cursor: {} }",
"name" : "MongoError",
"ok" : 0
}
或
Error encountered
Element 'inprog' not found.
Type: System.Collections.Generic.KeyNotFoundException
Stack: 在 MangoUI.ComServerView.RefreshCurrentOps(MMongo mo, TimeSpan& data, TimeSpan& gui, Boolean throwEx)
在 MangoUI.ComServerView.RenderMe()
不僅有root角色,還有個超級無敵的__system角色不過官方不推薦使用,一般起用root角色即可。
詳見:
3.0版本還是有root的,如下面第5種方式建出的才是root超級許可權的使用者。
mongodb從2.4版本中對使用者許可權管理做了全新的調整,把許可權細化了,增強了安全性,越來越像mysql的許可權管理了。
1. 建立一個超級使用者
use admin
db.createUser(
{
user: "adminUserName",
pwd: "userPassword",
roles:
[
{
roles: "userAdminAnyDatabase",
db: "admin"
}
]
}
)
超級使用者的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對所有資料庫的訪問)。
db是指定資料庫的名字,admin是管理資料庫。
2. 用新建立的使用者登入
mongo --host xxx -u adminUserName -p userPassword --authenticationDatabase admin
3. 檢視當前使用者的許可權
db.runCommand(
{
usersInfo:"userName",
showPrivileges:true
}
)
4. 建立一般使用者,也是用createUser
use db01
db.createUser(
{
user:"oneUser",
pwd:"12345",
roles:[
{role:"read",db:"db01"},
{role:"read",db:"db02"},
{role:"read",db:"db03"}
]
}
)
5. 建立一個不受訪問限制的超級使用者
use admin
db.createUser(
{
user:"superuser",
pwd:"pwd",
roles:["root"]
}
)
6. 修改密碼
use admin
db.changeUserPassword("username", "xxx")
7. 檢視使用者資訊
db.runCommand({usersInfo:"userName"})
8. 修改密碼和使用者資訊
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
注:
1. 和使用者管理相關的操作基本都要在admin資料庫下執行,要先use admin;
2. 如果在某個單一的資料庫下,那隻能對當前資料庫的許可權進行操作;
3. db.addUser是老版本的操作,現在3.0版本已經不通使用,建立出來的user是帶有root role的超級管理員。
千萬不要相信百度上各種,3.0起沒有root使用者,授個userAdminAnyDatabase角色許可權的使用者就是root使用者。
不然用客戶端連線會報下面一些錯誤
mongo shell 中db.auth 授權後刪除普通資料庫報錯
> db.dropDatabase()
{
"ok" : 0,
"errmsg" : "not authorized on guo to execute command { dropDatabase: 1.0 }",
"code" : 13
}
這是因為userAdminAnyDatabase不包括刪除資料庫許可權
客戶端連線檢視資料包錯
{
"code" : 13,
"errmsg" : "not authorized on admin to execute command { listCollections: true, filter: {}, cursor: {} }",
"message" : "not authorized on admin to execute command { listCollections: true, filter: {}, cursor: {} }",
"name" : "MongoError",
"ok" : 0
}
或
Error encountered
Element 'inprog' not found.
Type: System.Collections.Generic.KeyNotFoundException
Stack: 在 MangoUI.ComServerView.RefreshCurrentOps(MMongo mo, TimeSpan& data, TimeSpan& gui, Boolean throwEx)
在 MangoUI.ComServerView.RenderMe()
不僅有root角色,還有個超級無敵的__system角色不過官方不推薦使用,一般起用root角色即可。
詳見:
3.0版本還是有root的,如下面第5種方式建出的才是root超級許可權的使用者。
mongodb從2.4版本中對使用者許可權管理做了全新的調整,把許可權細化了,增強了安全性,越來越像mysql的許可權管理了。
1. 建立一個超級使用者
use admin
db.createUser(
{
user: "adminUserName",
pwd: "userPassword",
roles:
[
{
roles: "userAdminAnyDatabase",
db: "admin"
}
]
}
)
超級使用者的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對所有資料庫的訪問)。
db是指定資料庫的名字,admin是管理資料庫。
2. 用新建立的使用者登入
mongo --host xxx -u adminUserName -p userPassword --authenticationDatabase admin
3. 檢視當前使用者的許可權
db.runCommand(
{
usersInfo:"userName",
showPrivileges:true
}
)
4. 建立一般使用者,也是用createUser
use db01
db.createUser(
{
user:"oneUser",
pwd:"12345",
roles:[
{role:"read",db:"db01"},
{role:"read",db:"db02"},
{role:"read",db:"db03"}
]
}
)
5. 建立一個不受訪問限制的超級使用者
use admin
db.createUser(
{
user:"superuser",
pwd:"pwd",
roles:["root"]
}
)
6. 修改密碼
use admin
db.changeUserPassword("username", "xxx")
7. 檢視使用者資訊
db.runCommand({usersInfo:"userName"})
8. 修改密碼和使用者資訊
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
注:
1. 和使用者管理相關的操作基本都要在admin資料庫下執行,要先use admin;
2. 如果在某個單一的資料庫下,那隻能對當前資料庫的許可權進行操作;
3. db.addUser是老版本的操作,現在3.0版本已經不通使用,建立出來的user是帶有root role的超級管理員。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24742969/viewspace-1981570/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB 使用者與許可權管理MongoDB
- MongoDB入門系列(四):許可權管理MongoDB
- mongodb 的許可權系統MongoDB
- Linux-許可權管理(ACL許可權)Linux
- PostgreSQL:許可權管理SQL
- Mysql——許可權管理MySql
- Mysql 許可權管理MySql
- oracle 許可權管理Oracle
- sql許可權管理SQL
- 許可權管理策略
- MySQL許可權管理MySql
- 4、許可權管理
- mongoDB 3.0 安全許可權訪問MongoDB
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- Linux 許可權管理之目錄許可權限制Linux
- Security 10:許可權管理
- SQL Server 許可權管理SQLServer
- 許可權管理[Linux]Linux
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- DRF內建許可權元件之自定義許可權管理類元件
- Android許可權管理之Permission許可權機制及使用Android
- .NET 程式許可權控制、獲得管理員許可權程式碼
- ylbtech-許可權管理-資料庫設計-功能許可權管理技術資料庫
- MongoDB使用者許可權管理,設定密碼並連線MongoDB密碼
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- ThinkPHP5+許可權管理PHP
- MySQL許可權管理實戰MySql
- ubuntu 許可權管理設定Ubuntu
- 【JavaWeb】許可權管理系統JavaWeb
- Linux基本許可權管理Linux
- Oracle ERP許可權管理Oracle
- 賬號和許可權管理
- 關於mysql許可權管理MySql
- mongoDB安裝時提示沒有許可權MongoDB
- Mac 檔案許可權管理(桌面管理)Mac
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 許可權之選單許可權
- Vue2.0 + ElementUI 手寫許可權管理系統後臺模板(二)——許可權管理VueUI