標籤:style blog http color os 使用 ar sp 資料
此文章主要記錄部分主要的 MongoDB 的 DCL 操作。
MongoDB 預設不需要使用者名稱和密碼就可以用 mongodb.exe 登入
一、開啟 MonogoDB 的許可權模式
修改 MongoDB 服務的註冊語句,修改加入 --auth 參數,詳情見MongoDB 入門之安裝篇
"$MONGODB_HOME\bin\mongod.exe" --config "$MONGODB_HOME\mongo.cfg" --install --auth
C:\Windows\System32\sc.exe create MongoDB binPath= "\"$MONGODB_HOME\bin\mongod.exe\" --service --auth --config=\"$MONGODB_HOME\mongo.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
或者在mongod.cfg 中添加配置
auth=true
二、使用者權限管理
- 建立使用者
> db.addUser("user","abc123_")WARNING: The ‘addUser‘ shell helper is DEPRECATED. Please use ‘createUser‘ insteadSuccessfully added user: { "user" : "user", "roles" : [ "dbOwner" ] }>
可以看到當執行 addUser 命令是出現 wraning,雖然建立成功了,但是 MongoDB 建議使用 createUser。
> db.createUser({... user:"user",... pwd:"abc123_",... roles:[... {... role:"dbOwner",... db:"mydb"... }... ]... })Successfully added user: { "user" : "user", "roles" : [ { "role" : "dbOwner", "db" : "mydb" } ]}>
如果 MongoDB 開啟了許可權模式,並且某一個資料庫沒有任何使用者時,在不驗證許可權的情況下,可以建立一個使用者,當繼續建立第二個使用者時,會返回錯誤,若想繼續建立使用者則必須登入。
2014-10-16T10:40:41.904+0800 Error: couldn‘t add user: not authorized on mydb to execute command { createUser: "test", pwd: "xxx", roles: [ { role: "dbOwner", db: "mydb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004>
建立超級管理員
建立超級管理員需要未開啟許可權模式的情況下執行。如果已開啟許可權而在 admin 下建立超級管理員,會出現如下錯誤
> db.createUser({... user:"admin",... pwd:"admin",... roles:[... {... role:"userAdminAnyDatabase",... db:"admin"... }... ]... })2014-10-16T10:48:01.223+0800 Error: couldn‘t add user: not authorized on admin to execute command { createUser: "admin", pwd: "xxx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004>
關閉許可權模式建立超級管理員
> use adminswitched to db admin> db.createUser({... user:"admin",... pwd:"admin",... roles:[... {... role:"userAdminAnyDatabase",... db:"admin"... }... ]... })Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ]}>
如果使用 addUser 建立超級管理員還必須切換到 admin 資料庫。
- 刪除使用者
> db.dropUser("user")true>
- 登入
anth 需要登入使用者有該資料庫的許可權
> use mydbswitched to db mydb> db.auth("user","abc123_")1>
MongoDB 入門之基礎 DCL