91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb權限管理01

發布時間:2020-03-01 21:13:38 來源:網絡 閱讀:443 作者:馬吉輝 欄目:MongoDB數據庫

mongodb權限管理基礎概念
概念解釋
1.數據庫用戶角色
read:該角色擁有數據的只讀權限,系統集合以及system.indexes,system.js,system.namespaces集合除外。
readWrite:該角色擁有對應數據庫的讀寫權限,系統集合和system.js集合除外。
2.數據庫管理角色
dbAdmin:該角色擁有指定數據庫數據庫管理權限,包括 system.indexes, system.namespaces, system.profile集合的操作權限。該角色不擁有所有非系統集合的讀權限。
dbOwner:該角色擁有指定數據庫的所有權限,該角色包括:readWrite、dbAdmin、userAdmin。
userAdmin:該角色擁有指定數據庫用戶和角色的管理權限。包括創建用戶等。
3.群集管理角色
clusterAdmin:該角色擁有群集的所有權限。該角色包含clusterManager,clusterMonitor,hostManager 角色權限。同時還要刪除數據庫的權限。
clusterManager:該角色擁有群集的管理和監控權限,包括對local、config數據庫的訪問權限。同時該角色擁有分片和復制集的管理權限。
clusterMonitor:該角色擁有群集的監控權限。
hostManager:該角色擁有群集的監控和服務管理權限。
//注意:這些角色只能在Admin數據庫下創建
4.備份還原角色
backup:該角色擁有備份數據的權限。
restore:該角色擁有還原備份數據的權限。
//注意:這些角色只能在Admin數據庫下創建
5.所有數據庫角色
該分類下面的角色權限和數據庫角色權限一樣,區別在于它擁有的是所有數據庫的權限而不是指定數據庫下的權限。但是不擁有system.*相關集合、local、config數據庫的權限。
readAnyDatabase
readWriteAnyDatabase
userAdminAnyDatabase
dbAdminAnyDatabase
//注意:這些角色只能在Admin數據庫下創建
6.超級權限角色
root:該角色擁有所有權限,該角色包含readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin roles, restore, and backup角色。
注意:該角色只能在創建在Admin庫中
7.內部角色
__system:該角色為系統內部角色,比如復制集成員、mongos使用。

參考鏈接:我們需要整理小結一下,整個流程
MongoDB 4.X 用戶和角色權限管理總結
https://www.cnblogs.com/dbabd/p/10811523.html
//完全參照此鏈接 可行

小結如下:
1、謹記:先在不開啟認證的情況下,創建用戶,之后關閉服務,然后再開啟認證,才生效。
2、我們正常的搭建mongodb,然后在創建自定義角色
(在admin數據庫中創建自定義用戶dbabd,對集合city有find,update權限,對集合user_operation只有find權限。)
//我的猜想,我們可以不創建這個 后面進行驗證
3、用戶,必須先創建“創建用戶管理的用戶”
//啟用訪問控制登錄之前,首先需要在admin數據庫中創建角色為userAdmin或userAdminAnyDatabase作為用戶管理的用戶,之后才能通過這個用戶創建其它角色的用戶,這個用戶作為其它所有用戶的管理者。
4、開啟訪問控制,在這里我們在啟動 mongodb的時候加上--auth (注意,我們在配置文件中加auth=true的時候沒有成功)
//[root@prd3-mysql-0-36 ~]# mongod -f /ivargo/app/mongodb/conf/mongo.conf --auth
5、用戶管理用戶驗證 可以使用我們創建的管理用戶的用戶去登錄 ,在這里就是user_admin 這個用戶去登錄
//可以理解為 是目前mongodb的最高權限者
6、接下來,才是創建一個普通用戶,給他某個庫的可讀,可寫的權限
//也就是說,必須要自己先創建一個管理普通用戶的用戶,然后在登錄到這個管理用戶的用戶下 去創建文明想要創建的用戶。
7、創建好了普通用戶,之后,就是為用戶添加角色(我的理解,角色就是權限的意思)
比如 為用戶dbabd_user添加dbabd數據庫的read角色(權限)。

接下來,我們可以根據我寫的小結,再次的實驗一次

上面的測試中創建管理用戶用戶名 的角色為 userAdminAnyDatabase 他的權限分配為:可以在指定數據庫創建和修改用戶(除了數據庫config和local之外)。
如果是root的角色的話,那么就是超級最大的權限 ,我們下面試一下,最高的root權限

// 創建管理用戶用戶名為user_admin,密碼admin
db.createUser(
{
user: "user_admin",
pwd: "admin",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
}
)

//總結

use admin
switched to db admin
db.system.users.find()
{ "_id" : "admin.user_admin", "user" : "user_admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "YVnHB6u4l4kxyVkAG9h7bQ==", "storedKey" : "u0bVa7oIMBQpyD8vzv9HQHAHBGk=", "serverKey" : "XE9j9YQKKWi8/1CdXchLWILs6Ds=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "q1riE6iDxYrY3ROeVAw59q8DXg47B5DeGxtw6w==", "storedKey" : "OVbdZPfC7CsmHGZKKiW2jH50cqMgPX8OfTgfcTg3MXM=", "serverKey" : "0TjC2lObSJ7lmzwTMNXWWeG6leHLpzK9n+VReDUrKEs=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
{ "_id" : "admin.dbabd_user", "user" : "dbabd_user", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Uvls4hIsjxHctMK8etQRQA==", "storedKey" : "/KAF4Zl7nOmeMEy+UBnpLVNPhvw=", "serverKey" : "/g85OaGcrfWAfisbllqAdqjUTP8=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "vCoqeEVfao5T6Rv6dMlw7J6zDFU0KoqDjRxXyA==", "storedKey" : "IL1NENjImUYXiRuxxSA3uz4ein8OPNx/VJZVag0BcV0=", "serverKey" : "GCRyzJ8siZEgAL6qURfuY4GQn7VYz4+o2PmtmT4rqmc=" } }, "customData" : { "info" : "user for dbabd" }, "roles" : [ { "role" : "read", "db" : "dbabd" }, { "role" : "dbabd", "db" : "admin" }, { "role" : "read", "db" : "admin" } ] }

show users;
{
"_id" : "admin.dbabd_user",
"user" : "dbabd_user", //這是創建的普通的用戶
"db" : "admin",
"customData" : {
"info" : "user for dbabd"
},
"roles" : [
{
"role" : "read", //角色為只讀
"db" : "dbabd" //針對dbadb這個數據庫
},
{
"role" : "dbabd", //這個角色是我們自己創建自定義的角色 dbabd
"db" : "admin"
},
{
"role" : "read",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
{
"_id" : "admin.user_admin", //管理普通用戶的用戶
"user" : "user_admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}

自定義實驗 ***** 很重要,看完 https://www.cnblogs.com/dbabd/p/10811523.html 給自己出的題目 很重要
題目為:
在mongodb中需要先創建一個 管理用戶的用戶 vargo 密碼為 vargo123 分配給他的權限為root
在創建一個majihui的普通用戶 密碼為 majihui123 只對 dbabd這個庫有只讀的權限

為了保持實驗的可靠性,請重新安裝mongodb 完全干凈的進行實驗

接下來,我們創建一個用戶叫 
//在mongodb中需要先創建一個 管理用戶的用戶 vargo 密碼為 vargo123  分配給他的權限為root
在創建一個majihui的普通用戶 密碼為 majihui123 只對 dbabd這個庫有只讀的權限
// 創建管理用戶用戶名為vargo,密碼vargo123
use admin
db.createUser(
    {
        user: "vargo",
        pwd: "vargo123",
        roles: [{ role: "root", db: "admin" }]
    }
)
實際操作為:
> use admin
switched to db admin
> db.createUser(
...     {
...         user: "vargo",
...         pwd: "vargo123",
...         roles: [{ role: "root", db: "admin" }]
...     }
... )
Successfully added user: {
        "user" : "vargo",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

接下來,我們關閉 mongodb 然后重啟mongodb 之后,然后進行 用戶管理用戶驗證 的開啟mongodb方式
[root@prd3-mysql-0-36 ~]# mongod -f /ivargo/app/mongodb/conf/mongo.conf --auth

vargo就是最高權限了

//接下來創建一個majihui的普通用戶 密碼為 majihui123 只對 dbabd這個庫有只讀的權限
use admin
db.createUser(
    {
        user: "majihui",
        pwd: "majihui123",
        roles:[{role:"read",db:"dbabd"}],
        customData: { info: "user for dbabd" }
    }
)
實際操作
> use admin
switched to db admin
> db.createUser(
...     {
...         user: "majihui",
...         pwd: "majihui123",
...         roles:[{role:"read",db:"dbabd"}],
...         customData: { info: "user for dbabd" }
...     }
... )
Successfully added user: {
        "user" : "majihui",
        "roles" : [
                {
                        "role" : "read",
                        "db" : "dbabd"
                }
        ],
        "customData" : {
                "info" : "user for dbabd"
        }
}

我們來驗證一下
[root@prd3-mysql-0-36 ~]# mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2

use admin
switched to db admin
db.auWarning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
db.auth('majihui','majihui123')
1
show dbs;
dbabd 0.000GB
use dbabd;
switched to db dbabd
show collections;
city
user_operation
db.city.find();
{ "_id" : ObjectId("5ce27f0484dc5c8b35081590"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5ce27f1184dc5c8b35081591"), "title" : "redis 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5ce27f1784dc5c8b35081592"), "title" : "mysql 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
db.user_operation.count();
1
//我們接下來 去嘗試的插入一個數據試一下
db.user_operation.insert({title: 'majihui 教程',
description: 'MongoDB 是一個 Nosql 數據庫',
by: '菜鳥教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 300
})
實際操作
db.user_operation.insert({title: 'majihui 教程',
... description: 'MongoDB 是一個 Nosql 數據庫',
... by: '菜鳥教程',
... url: 'http://www.runoob.com',
... tags: ['mongodb', 'database', 'NoSQL'],
... likes: 300
... })
WriteCommandError({
"ok" : 0,
"errmsg" : "not authorized on dbabd to execute command { insert: \"user_operation\", ordered: true, lsid: { id: UUID(\"441b14ee-ab6e-44c3-9b23-7640ceeb6b1f\") }, $db: \"dbabd\" }",
"code" : 13,
"codeName" : "Unauthorized"
})
出現報錯,正確
//我們接下來嘗試的去刪除一個文檔
db.user_operation.find();
{ "_id" : ObjectId("5ce27f4684dc5c8b35081593"), "title" : "mysql 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
db.user_operation.deleteMany( title : "mysql 教程");
2019-05-21T14:04:45.765+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:36
//報錯,無法刪除,對了
db.user_operation.find();
{ "_id" : ObjectId("5ce27f4684dc5c8b35081593"), "title" : "mysql 教程", "description" : "MongoDB 是一個 Nosql 數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀柔区| 桐梓县| 淳化县| 准格尔旗| 新密市| 民勤县| 边坝县| 建湖县| 平远县| 阿克陶县| 朝阳市| 宁乡县| 西昌市| 论坛| 故城县| 黑山县| 锦州市| 江源县| 铁岭市| 佛学| 临桂县| 十堰市| 辉县市| 东港市| 开阳县| 肇东市| 大理市| 永嘉县| 红原县| 嵊泗县| 武功县| 灌云县| 弥渡县| 大连市| 桂平市| 曲阳县| 霞浦县| 筠连县| 迭部县| 泽普县| 印江|