由於目前有一個試驗性的項目想要使用NoSQL,而MongoDB在工做中有必定的接觸,因此這個項目打算使用MongoDB,而在真正從下載到安裝到使用的時候發現了很多的知識點,以此做爲記錄。程序員
#mongodb config file
dbpath=/Users/reesemonica/mongodb/data/db
logpath=/Users/reesemonica/mongodb/mongod.log
logappend=true
fork=true
auth=true
Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "command listDatabases requires authentication",
"code" : 13,
"codeName" : "Unauthorized"
}
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
} )
建立用戶的命令的各個參數基本上經過參數名就知道是作什麼的,其中roles.db參數是指定用戶的數據庫,admin數據庫雖不知道它具體作什麼的,但既然建立超級用戶須要在這裏,想必就是存儲一些用戶信息的。mongodb
在建立好超級用戶後,此時還不能執行show dbs命令,還須要作一次權限認證db.auth('root','root'),返回1表示認證成功,此時再輸入show dbs會回顯如下:數據庫
admin 0.000GB
config 0.000GB
local 0.000GB
WriteCommandError({
"ok" : 0,
"errmsg" : "not authorized on recommended to execute command { insert: \"recommended\", ordered: true, lsid: { id: UUID(\"5b1b337e-831a-4fb2-b90c-d6d0b347ad79\") }, $db: \"recommended\" }",
"code" : 13,
"codeName" : "Unauthorized"
})
這意思仍是沒有受權,但我明明不是已經建立了一個超級用戶了嗎,MySQL不就能經過一個超級用戶暢通無阻嗎。網絡
事實是,MongoDB的用戶權限和數據庫是綁定的。也就是建立一個新的數據庫,並在數據庫中插入數據的正確操做應該是須要建立與之對應的用戶,下面退出MongoDB命令行模式,從新進入:app
以上是學習MongoDB所積累到的第一個知識點**用戶權限**,經過命令行模式不足以直觀地展現數據,可以使用其餘可視化工具對MongoDB進行操做,例如Robo 3T。工具
這是一個能給程序員加buff的公衆號 學習