mongodb安裝與權限配置

mongodb下載地址:官方下載
IDE工具:Robo 3T:官方下載redis

windows系統要求64位,最低2g內存,推薦8g內存及以上mongodb

安裝過程沒有須要配置的地方,直接下一步到結束,若是想要方即可以在環境變量中Path追加mongodb安裝文件的bin目錄數據庫

在想要保存數據庫的盤符新建文件夾mongodb 包含兩個子文件夾 data和log及一個mongod.cfg文件,log文件夾新建文本改成mongo.logwindows

 

其中mongod.cfg文件內容以下(本人用虛擬機只有一個C盤):服務器

dbpath=C:\mongodb\data
logpath=C:\mongodb\log\mongo.log
logappend=true
directoryperdb=true
auth=false
#port=55600app

#表示忽略該行,本示例沒有使用自定義端口,將採用默認端口27017,若是設置了端口號 ,以後鏈接mongo都須要指定服務器和端口號工具

 

以管理員身份運行命令提示符,若是已經配置過環境變量,直接運行 mongod,不然須要移動到mongodb安裝目錄的bin文件夾再執行mongod3d

若是報如下異常rest

可去 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145 下載vc_redist.x64.exe安裝便可blog

 

執行如下命令建立並開啓MongoDB服務(須要管理員權限)

sc create MongoDB binPath= "C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe --config=C:\mongodb\mongod.cfg --service"

net start MongoDB

 

接下來打開MongoDB Shell工具:在命令提示符中輸入 mongo  運行(若是已經設置端口12345,此處爲  mongo --port 12345)

此時的數據庫是沒有權限控制的,任何人均可以登陸到數據庫

輸入 show dbs; 顯示全部數據庫

輸入 use admin; 使用admin數據庫 分號是可選的 

輸入 show collections 顯示全部文檔(關係型數據庫中表的概念)

輸入 show users 顯示全部用戶,當前沒有任何帳戶

 

接下來建立帳戶,確保是在use admin的狀況下:

db.createUser({
  user:"root",
  pwd: "123456",
  roles: [ { role: "root", db: "admin" }]
})

db.createUser({
  user:"sa",
  pwd: "123456",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" },{ role: "read", db: "clearimg" } ]
})

註冊用戶登陸權限(這幾個帳號是在admin數據庫下,鏈接服務器即便有其餘數據庫權限也必須鏈接到admin)

db.auth("root","123456")

db.auth("sa","123456")

 

添加一個新的數據庫 mytest,只須要對mytest數據庫進行文檔操做,存在則調用,不存在則建立

 在mytest數據庫新建帳號test,並註冊權限

db.createUser({
  user:"test",
  pwd: "123456",
  roles: [{ role: "read", db: "mytest" } ]
})

db.auth("test","123456")

 切換到admin數據庫添加test2用戶使其只擁有mytest數據庫的read權限

use mytest
db.createUser({
  user:"test2",
  pwd: "123456",
  roles: [{ role: "read", db: "mytest" } ]
})
db.auth("test2","123456")

用show users 查看當前數據庫擁有的帳戶

最後用exit或者ctrl + c退出MongoDB Shell   到此爲止數據庫已經擁有對應的帳戶,沒有開啓權限驗證

接下來停用原有MongoDB服務(須要管理員權限)

net stop MongoDB

 

 並更新mongod.cfg文件中的auth=true,執行啓動服務的指令(須要管理員權限)

 net start MongoDB

如今已經開啓權限認證了,再次登陸打開MongoDB Shell ,輸入show dbs,發現報異常

exit退出MongoDB Shell,改用帳號登陸服務器

mongo -u sa -p 123456 localhost:27017/admin

嘗試登陸時不帶數據庫名,發現報權限錯誤

切換帳號test2登陸  分別嘗試鏈接到admin 和mytest會發現test2能夠登陸admin而不是mytest,但test2只有mytest的讀取權限,操做admin數據庫也是非法的

嘗試用test帳號登陸mytest數據庫並嘗試操做其餘數據庫

 

備份和恢復角色:bakcup restore
全部數據庫角色:

read 指定數據庫的只讀權限,擁有如下權限:

readWrite 擁有指定數據庫的讀寫權限,除了具備read權限,還擁有如下權限:

read和readWrite只要就是對庫中表的操做權限

dbAdmin 指定數據庫的管理權限

userAdmin 指定數據庫的用戶管理權限

clusterAdmin 集羣管理權限

readAnyDatabase 任何數據庫的只讀權限(和read類似)

readWriteAnyDatabase 任何數據庫的讀寫權限(和readWrite類似)

userAdminAnyDatabase 任何數據庫用戶的管理權限(和userAdmin類似)

dbAdminAnyDatabase 任何數據庫的管理權限(dbAdmin類似)

建立用戶 db.createUser({user:"username",pwd: "pwd",roles: [ { role: "rolename", db: "dbname" },{ role: "rolename2", db: "dbname2" } ]})修改密碼 db.changeUserPassword('usname','newpwd');添加角色 db.grantRolesToUser("username", [{ role: "rolename",db:"dbname"}] )刪除權限 db.revokeRolesFromUser("username",[{ role: "rolename",db:"dbname"}])刪除用戶 db.dropUser("username")

相關文章
相關標籤/搜索