【Mongo】mongodb的使用者認證
1.建立超級賬號
-
>
use admin
;
-
>
db
.
createUser
(
{
user
:
"admin"
,
pwd
:
"123456"
,
roles
:
[
{ role
:
"root"
,
db
:
"admin"
}
]
}
)
-
Successfully added user
:
{
-
"user"
:
"admin"
,
-
"roles"
:
[
-
{
-
"role"
:
"root"
,
-
"db"
:
"admin"
-
}
-
]
- }
user:使用者名稱
pwd:密碼
roles
:指定使用者的角色,可以用一個空陣列給新使用者設定空角色;在roles欄位,可以指定內建角色和使用者定義的角色。
可以選:
-
Built
-
In
Roles(內建角色):
-
1
.
資料庫使用者角色:read、readWrite
;
-
2
.
資料庫管理角色:dbAdmin、dbOwner、userAdmin;
-
3
.
叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
-
4
.
備份恢復角色:backup、restore;
-
5
.
所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
6
.
超級使用者角色:root
-
// 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
- 7 . 內部角色:__system
具體角色:
-
Read:允許使用者讀取指定資料庫
-
readWrite:允許使用者讀寫指定資料庫
-
dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system
.
profile
-
userAdmin:允許使用者向system
.
users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
-
clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
-
readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
-
readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
-
userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
-
dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
- root:只在admin資料庫中可用。超級賬號,超級許可權
2.開啟許可權認證
-
配置檔案新增
- [ dbaadmin@ ip - 172 - 31 - 36 - 77 ~ ] $ more /usr/ local / mongodb/conf/mongod . conf
- auth = true
3.重啟後認證超級賬號
-
[
root@iZ2ze66bhrbxkc31nljgjnZ mongodb
]
#
/usr/
local
/
mongodb/bin/mongo
-
MongoDB shell version
:
3
.
.
6
-
connecting to
:
test
-
>
show dbs
; --沒許可權檢視
-
2018
-
05
-
07T14
:
29
:
25
.
847
+
0800 E QUERY Error
:
listDatabases failed
:
{
-
"ok"
:
0
,
-
"errmsg"
:
"not authorized on admin to execute command { listDatabases: 1.0 }"
,
-
"code"
:
13
-
}
-
at Error
(
<
anonymous
>
)
-
at Mongo
.
getDBs
(
src/mongo/shell/mongo
.
js
:
47
:
15
)
-
at shellHelper
.
show
(
src/mongo/shell/utils
.
js
:
630
:
33
)
-
at shellHelper
(
src/mongo/shell/utils
.
js
:
524
:
36
)
-
at
(
shellhelp2
)
:
1
:
1 at src/mongo/shell/mongo
.
js
:
47
-
>
use admin
;
-
switched to db admin
-
>
db
.
auth
(
'admin'
,
'123456'
)
; -admin下認證超級賬號,
資料庫帳號是跟著資料庫來走的,哪裡建立哪裡認證。
-
1
-
>
show dbs
;
-
admin 0
.
078GB
-
local
0
.
078GB
-
rundb 0
.
078GB
- rundb2 0 . 078GB
4.新增普通賬號
-
>
use rundb2
;
- switched to db rundb2
-
>
db
.
createUser
(
{
user
:
'runuser2'
,
pwd
:
'123456'
,
roles
:
[
{
role
:
"dbOwner"
,
db
:
"
rundb2
"
}
]
}
)
-
Successfully added user
:
{
-
"user"
:
"runuser2"
,
-
"roles"
:
[
-
{
-
"role"
:
"dbOwner"
,
-
"db"
:
"rundb2"
-
}
-
]
-
}
-
>
show users
; <1pre style="margin-top:0px;margin-bottom:0px;white-space:pre-wrap;text-align:justify;font-family:;" "="">
#檢視當前庫下的使用者
-
{
-
"_id"
:
"rundb2.runuser"
,
-
"user"
:
"runuser"
,
-
"db"
:
"rundb2"
,
-
"roles"
:
[
-
{
-
"role"
:
"readWrite"
,
-
"db"
:
"rundb2"
-
}
-
]
-
}
-
{
-
"_id"
:
"rundb2.runuser2"
,
-
"user"
:
"runuser2"
,
-
"db"
:
"rundb2"
,
-
"roles"
:
[
-
{
-
"role"
:
"dbOwner"
,
-
"db"
:
"rundb2"
-
}
-
]
- }
5.普通賬號認證
- 認證方式一
-
[
root@iZ2ze66bhrbxkc31nljgjnZ mongodb
]
#
/usr/
local
/
mongodb/bin/mongo
-
u runuser
-
p 123456 rundb2
-
MongoDB shell version
:
3
.
.
6
-
connecting to
:
rundb2
-
>
show collections
;
-
system
.
indexes
-
testcoll
-
testcoll2
認證方式二
-
[
root@iZ2ze66bhrbxkc31nljgjnZ mongodb
]
#
/usr/
local
/
mongodb/bin/mongo
-
MongoDB shell version
:
3
.
.
6
-
connecting to
:
test
-
>
use rundb2
;
-
switched to db rundb2
-
>
show dbs
;
-
2018
-
05
-
07T14
:
36
:
46
.
809
+
0800 E QUERY Error
:
listDatabases failed
:
{
-
"ok"
:
0
,
-
"errmsg"
:
"not authorized on admin to execute command { listDatabases: 1.0 }"
,
-
"code"
:
13
-
}
-
at Error
(
<
anonymous
>
)
-
at Mongo
.
getDBs
(
src/mongo/shell/mongo
.
js
:
47
:
15
)
-
at shellHelper
.
show
(
src/mongo/shell/utils
.
js
:
630
:
33
)
-
at shellHelper
(
src/mongo/shell/utils
.
js
:
524
:
36
)
-
at
(
shellhelp2
)
:
1
:
1 at src/mongo/shell/mongo
.
js
:
47
-
-
>
db
.
auth
(
'runuser2'
,
'123456'
)
-
1
-
>
show collections
;
-
system
.
indexes
-
testcoll
- testcoll2
5賬號管理
-
修改密碼
-
MongoDB 修改帳號的密碼有兩種方式: 1
.
使用 changeUserPassword 方法 2
.
使用 updateUser 方法裡面的 pwd 引數
-
/
/
驗證帳號密碼
-
>
db
.
auth
(
"biadmin"
,
"biadmin"
)
-
1
-
//修改帳號密碼
-
>
db
.
changeUserPassword
(
"biadmin"
,
"123"
)
-
//使用原密碼驗證失敗返回0
-
>
db
.
auth
(
"biadmin"
,
"biadmin"
)
-
Error
:
Authentication failed
.
-
0
-
//使用修改後密碼驗證成功返回1
-
>
db
.
auth
(
"biadmin"
,
"123"
)
-
1
-
//使用updateUser 修改密碼
-
>
db
.
updateUser
(
-
"biadmin"
,
-
{pwd
:
"biadmin"
}
)
-
//驗證密碼成功返回1
-
>
db
.
auth
(
"biadmin"
,
"biadmin"
)
-
1
-
- 刪除帳號
- MongoDB 刪除帳號有兩種方式:
- 1 . 使用 dropUser ( "username" ) 刪除當前資料庫下指定帳號
-
2
.
使用 dropAllUsers
(
)
刪除資料庫下所有帳號
-
/
/
已經建立兩個測試帳號
-
>
db
.
getUser
(
"test1"
)
-
{
-
"_id"
:
"bitest.test1"
,
-
"user"
:
"test1"
,
-
"db"
:
"bitest"
,
-
"roles"
:
[
-
{
-
"role"
:
"dbAdmin"
,
-
"db"
:
"bitest"
-
}
-
]
-
}
-
>
db
.
getUser
(
"test2"
)
-
{
-
"_id"
:
"bitest.test2"
,
-
"user"
:
"test2"
,
-
"db"
:
"bitest"
,
-
"roles"
:
[
-
{
-
"role"
:
"dbAdmin"
,
-
"db"
:
"bitest"
-
}
-
]
-
}
-
//使用dropUser刪除帳號test1成功返回true
-
>
db
.
dropUser
(
"test1"
)
-
true
-
//查詢帳號test1已不存在
-
>
db
.
getUser
(
"test1"
)
-
null
-
//使用dropAllUsers刪除所有帳號
-
>
db
.
dropAllUsers
(
)
-
2
-
//查詢帳號 test2,biadmin 都已不存在
-
>
db
.
getUser
(
"test2"
)
-
null
-
>
db
.
getUser
(
"biadmin"
)
-
null
-
//查詢資料庫下所有帳號返回空陣列
-
>
db
.
getUsers
(
)
-
[
]
-
6 更改使用者資訊
更改role,密碼都行 db.updateUser( "test",{ roles:[ { role: "readWrite", db: "welike_mongo" } ], pwd:"123456" } )
更多的操作檢視參照文件:
https://www.cnblogs.com/shiyiwen/p/5552750.html
https://www.cnblogs.com/damingge/p/6507605.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2155305/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB身份認證機制揭秘!MongoDB
- MongoDB的mongo命令使用完整版MongoDB
- Django的使用者認證元件Django元件
- 【Mongo】MongoDB WiredTiger引擎調優技巧MongoDB
- laravel使用者認證Laravel
- MongoDB資料庫授權認證的實現JRMYMongoDB資料庫
- Laravel 5.1使用者認證Laravel
- Laravel 使用者認證 AuthLaravel
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- 使用mongo-express管理mongodb資料庫ExpressMongoDB資料庫
- 【Web總結】使用者認證Web
- 06.Django-使用者認證Django
- Jenkins API使用者認證方式JenkinsAPI
- 使用 JWT 認證使用者身份JWT
- laravel使用者認證圖解Laravel圖解
- Python使用LDAP做使用者認證PythonLDA
- PHP 使用 jwt 使用者身份認證PHPJWT
- KubeCube 使用者管理與身份認證
- MongoDB副本集keyFile認證檔案必須滿足的條件MongoDB
- 解決 Laravel JWT 多表認證時獲取不到當前認證使用者的問題LaravelJWT
- Spring認證中國教育管理中心-Spring Data MongoDB教程SpringMongoDB
- Laravel+JWT 多表(or多使用者)認證LaravelJWT
- 訪問使用者中心實現認證
- Laravel 使用者認證快速指南筆記Laravel筆記
- Laravel Passport 多表使用者認證踩坑LaravelPassport
- 為Kubernetes叢集新增使用者認證
- laravel8 jwt多使用者認證LaravelJWT
- Laravel 單元測試認證使用者Laravel
- Node.js的Koa實現JWT使用者認證Node.jsJWT
- 基於 JWT + Refresh Token 的使用者認證實踐JWT
- 基於MongodbDB的使用者認證-運維筆記MongoDB運維筆記
- 淺析 Laravel 自帶的使用者認證邏輯Laravel
- [譯]React中的使用者認證(登入態管理)React
- 基於使用者認證的前後端實現後端
- Laravel使用JWT來建立使用者認證APILaravelJWTAPI
- laravel5.1 — 實現多使用者認證Laravel
- Express + JWT使用者認證最輕實踐ExpressJWT
- 在身份認證後建立使用者物件ICurrentUser物件