【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:使用者認證MongoDB
- 【Mongodb】使用者和認證許可權總結MongoDB
- 【Mongodb】使用者和認證 許可權總結MongoDB
- mongodb3.03開啟認證MongoDB
- Django的使用者認證元件Django元件
- LNMP—Nginx的使用者認證LNMPNginx
- laravel使用者認證Laravel
- mongodb叢集搭建及配置安全認證MongoDB
- MongoDB的mongo命令使用完整版MongoDB
- mongo(mongodb)在linux下的安裝MongoDBLinux
- PHP 擴充套件 Mongo 與 MongoDBPHP套件MongoDB
- Laravel 使用者認證 AuthLaravel
- Laravel 多使用者認證Laravel
- Laravel 5.1使用者認證Laravel
- 【Mongo】MongoDB WiredTiger引擎調優技巧MongoDB
- MongoDB資料庫授權認證的實現JRMYMongoDB資料庫
- 如何修改MongoDB3.0的資料庫認證機制MongoDB資料庫
- 06.Django-使用者認證Django
- 【Web總結】使用者認證Web
- laravel使用者認證圖解Laravel圖解
- 使用 JWT 認證使用者身份JWT
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- [Mongo]建立新使用者Go
- 使用mongo-express管理mongodb資料庫ExpressMongoDB資料庫
- Django框架中的使用者認證的實現Django框架
- PHP 使用 jwt 使用者身份認證PHPJWT
- 學習 Lumen 使用者認證 (一)
- Jenkins API使用者認證方式JenkinsAPI
- 解決 Laravel JWT 多表認證時獲取不到當前認證使用者的問題LaravelJWT
- php_mongo.dll下載(php操作mongoDB需要)PHPMongoDB
- Laravel 使用者認證快速指南筆記Laravel筆記
- 訪問使用者中心實現認證
- Laravel+JWT 多表(or多使用者)認證LaravelJWT
- laravel8 jwt多使用者認證LaravelJWT
- Django之使用者認證模組詳解Django
- Python使用LDAP做使用者認證PythonLDA
- Laravel Passport 多表使用者認證踩坑LaravelPassport