Mongo 系統資料庫介紹以及權限設定。
本文中隻正對mongo2.61有效,較低版本中的指令在新版本中慢慢被替換掉了或是不推薦使用。例如,在mongo242版本中使用db.addUser()來建立使用者,但是在mongo261中使用這個指令時,會提示不推薦使用這個指令。
1.系統資料庫介紹。
Mongo中隻用兩個系統資料,分别是admin ,和 local 。Admin主要用來存儲的使用者,角色,版本的相關資訊。Local 主要存儲本地伺服器的相關資訊(伺服器的啟動和關閉相關資訊,副本集,複制的相關資訊)。在副本集中,這個資料庫是不會被複制的。
2.安全設定。
如果在配置檔案中沒有設定auth=true,那麼任何客服端都可以連結到mongo伺服器,如果admin的system.users 中沒有使用者那麼任何用戶端都可以對mongo伺服器做任何操作,沒有任何限制。是以在首次登陸mongo的時候第一件事就是設定一個登陸使用者,并且重新開機服務。
3.使用者相關問題。
建立使用者:db.createUser()
删除使用者:db.dropUser(UserName)
修改密碼:db.changeUserPassword(“UserName”,“NewPWD”)
執行個體一:删除使用者:
rs0:PRIMARY> db.system.users.find({user:"test"})
{ "_id" : "admin.test", "user" : "test", "db" : "admin", "credentials" : { "MONGODB-CR" : "d2c20ba3ec3c642d7187d11cb54a9016" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
rs0:PRIMARY> db.dropUser("test")
true
rs0:PRIMARY>
執行個體二:修改使用者密碼:
rs0:PRIMARY> db.auth("test1","anyu@2015")
1
rs0:PRIMARY> db.changeUserPassword("test1","anyu@2014")
rs0:PRIMARY> db.auth("test1","anyu@2014")
4:建立使用者
使用者建立比較複雜,涉及到使用者的權限,角色問題。
1.建立使用者
(1).建立一個不受通路限制的超級使用者,該使用者可以對任何資料庫,mongo伺服器做任何操作。
方式1:
use admin
db.createUser(
{
user:"admin",
pwd:"test@2015",
roles:["root"]
} )
方式2:
user: "admin",
pwd: "anyu@2014",
roles: [ {
role: "userAdminAnyDatabase",
db: "admin"
} ] } )
(2).建立一般使用者,也是用createUser
use db01
user:"proUser",
pwd:"anyu@2014",
roles:[
{role:"read",db:"db01"},
{role:"read",db:"db02"},
{role:"read",db:"db03"} ]
使用者proUser 對 db01,db02,db03 擁有讀權限
(3).常用的角色介紹:
read:隻讀角色
readWrite:讀寫角色
dbAdmin:資料庫管理權限
userAdmin:資料庫的使用者管理權限
clusterAdmin:叢集管理權限(副本集、分片、主從等相關管理)
readAnyDatabase:任何資料庫的隻讀權限(和read相似)
readWriteAnyDatabase:何資料庫的讀寫權限(和readWrite相似)
userAdminAnyDatabase:任何資料庫使用者的管理權限(和userAdmin相似)
dbAdminAnyDatabase:任何資料庫的管理權限(dbAdmin相似)
角色擁有的權限參考:
http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/2470
(4).使用者具體資訊檢視
檢視使用者權限:
db.runCommand(
usersInfo:"userName",
showPrivileges:true
檢視使用者資訊:
db.runCommand({usersInfo:"admin"})
rs0:PRIMARY> db.runCommand({usersInfo:"root"})
{
"users" : [
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
],
"ok" : 1
}
note:
1.增加使用者或是删除使用者都報錯的解決方法。
Error: couldn't add user: User and role management commands require auth data to have schema version
http://jingyan.baidu.com/article/6b97984d999ff31ca2b0bfce.html
參考連結:
http://www.chinacloud.cn/show.aspx?id=13972&cid=22
http://www.jb51.net/article/53830.htm