MySQL數據克隆的用戶權限設計

2020-12-08 楊建榮的資料庫筆記

最近完成了初版的數據邏輯備份恢復的功能,和業務方做了一些交流和演示,發現他們對於備份恢復側的一些東東還是不夠敏感,因為因為一些術語的差異,他們不大理解所謂的備份恢復能幹什麼,所以我們做了一些討論,最後決定改為「數據克隆」。

1.產品定位:

數據克隆是高效,安全的從通過從線上指定資料庫/表克隆數據,從而快速構建虛擬環境,提供更高效的數據交付服務。從效率上可以支持業務自助提取數據,分鐘級快速構建環境,可以通過workbench等工具訪問數據,整個過程基本不需要DBA手工操作介入。從安全上,支持數據操作日誌審計,提供庫/表訪問過濾,隨機虛擬環境和臨時密碼交付,此外會對虛擬環境使用時長進行限制,儘可能保證數據的使用安全。

2.適用場景:

目前數據克隆功能支持如下的場景:

1)線上配置數據的快速查看

2)提取線上表結構

3)日誌數據查詢,線上大表

4)線上SQL異常,快速構建虛擬環境進行SQL優化,壓測等

5)指定大表的變更和數據操作影響評估

6)數據補丁合併,基於業務邏輯的數據操作和數據補丁整理

整個實現的過程有很多考慮的細節,不過還是在設計和實現中由同事和我一併解決了。

到了交付的時機了,我們想到還有一個關鍵的地方需要補充,那就是資料庫和用戶的權限關聯,也就意味著每個人可以看到和使用的資料庫應該是不大一樣的,因為做一些權限隔離,所以接下來我會說說數據克隆方向的用戶權限設計。

數據克隆的用戶權限設計是面向業務使用的基礎功能,目前對於用戶權限的設計可以基於資料庫級別。

權限的實現可以分兩個階段來完成:

1)數據初始化階段,可以使用用戶組批量初始化的方式,部分數據可以從工單歷史中獲取

2)定製化配置階段,根據業務需求變更和組織架構調整進行資料庫和用戶映射關係的微調

其中,

實例信息和庫信息可以基於資料庫基線表 mysql_db_baseline

用戶組信息和用戶信息可以基於用戶表 user_info

資料庫-用戶關係表需要新建,表名為:mysql_db_user_rel(id,ip_addr,db_port,db_name,user_id)

需要實現四個子功能:

1)資料庫-用戶關係映射,實現單一資料庫和單一用戶的關係,在關係表中為一條記錄

2)資料庫-用戶關系列表,通過資料庫維度(IP+埠+資料庫名)查看相關用戶列表信息

3)資料庫-用戶組關係映射,實現單一資料庫和單一用戶組的關係,具體邏輯為:

a) 輸入資料庫信息(IP+埠+資料庫名),UserID

b) 根據UserID關聯用戶組信息

c) 根據用戶組信息得到組內的UserID列表

d) 循環用戶列表,根據資料庫-用戶關係建立映射,需要考慮重複記錄的過濾

4)實例列表信息,根據用戶UserID得到歸屬的實例列表,具體邏輯為:

a) 輸入UserID

b) 根據UserID在資料庫-用戶關係表中得到相關的資料庫列表,進一步過濾得到實例IP+埠信息

相關焦點

  • 入門MySQL——用戶與權限
    使用 CREATE USER 語句應該注意以下幾點:如果使用 CREATE USER 語句時沒有為用戶指定口令,那麼 MySQL 允許該用戶可以不使用口令登錄系統,然而從安全的角度而言,不推薦這種做法。使用 CREATE USER 語句必須擁有 MySQL 中 mysql 資料庫的 INSERT 權限或全局 CREATE USER 權限。
  • 一文詳解MySQL權限
    權限代表是否允許此用戶授權或者收回給其他用戶你給予的權 限• Index權限代表是否允許創建和刪除索引• Insert權限代表是否允許在表裡插入數據,同時在執行analyze table,optimize table,repair table語句的時候也需要insert權限• Lock權限代表允許對擁有select權限的表進行鎖定,以防止其他連結對此表 的讀或寫
  • 兩種MySQL查詢用戶權限的方法
    介紹兩種查看MySQL用戶權限的方法1、 使用MySQL grants命令
  • DBA必備技能,mysql權限管理(DCL語句)
    今天要講的內容跟DBA有很大關係,想做DBA權限管理是很重要的,今天就講一下mysql中的權限管理。一、用戶管理;1、切換資料庫;如下圖所示,將界面切換至命令界面;輸入命令use mysql;這句代碼意思是切換資料庫,切換到mysql這個資料庫下面,因為用戶信息在mysql下的user表內存儲著。
  • 揭秘一條select語句,在MySQL中權限訪問控制內幕
    第一:用戶管理模塊第二:用戶訪問動作控制模塊,用戶訪問動作最常見就是DML,DDL其中用戶管理模塊的作用,就是驗證用戶能否合法登錄mysql資料庫,而用戶訪問動作控制模塊,則控制這合法用戶能做動作。其實這麼說還是有些抽象,那來看看mysql資料庫中關於權限訪問控制的4張表。
  • Oracle和MySQL的數據導入,差別為什麼這麼大
    這個設計在很多應用場景中簡直絕了,對於開發同學是非常友好的。導出工具原生的有mysqldump,新版本的是mysqlpump(總體感覺性價比不是很高),當然還有一些補充的第三方工具,比如mydumper之類的。
  • MySQL如何完成一次查詢?
    、delete、udpate 和select 等操作數據DCL(Data Control Language):數據控制語句,用戶的訪問權限和安全級別。可以通過 grant 語句賦予資料庫表具有不同等級的權限,下面舉例:給指定用戶只分配 select 權限create user 'ttk'@'%' identified by 'aa123456';show grants for 'ttk'@'%';grant select
  • 如何使用MySQL資料庫
    如下圖:在MySQL資料庫伺服器中,用於訪問資料庫的各種用戶(如root)信息都保存在mysql庫中的user表中,熟練的管理員除了可以使用mysqladmin工具更改密碼外,還可以直接修改該表中的數據記錄來更改密碼。
  • MySQL導出數據為csv的方法
    [root@localhost tmp]# cat test1.csvcol1,col2,col3,col4,col51,a,1,1,12,b,2,2,23,c,NULL,NULL,NULL4,d,4,4,45,e,5,5,NULL注意:into outfile這種方法導出的文件,導出路徑資料庫必須要有權限並且導出的文件之前要不存在(如果沒權限報ERROR
  • B端產品設計:用戶角色權限系統設置
    詳細案例設計3.1 公司管理一個B端的用戶角色權限系統大致可以包含:公司管理、部門管理、角色管理、用戶管理。公司管理的錄入一般是為了後期的員工管理以及一些基礎信息維護時的歸屬,一般頁面設計如下:3.2 部門管理公司向下就是部門管理,在權限設計時,有時也會賦予部門一些權限,只要是這個部門的人都具有部門權限,當用戶再賦予角色時,會在部門權限的基礎上累計添加的角色權限。
  • MySQL何時執行flush privileges?
    %';上述語句執行完成後,MySQL也是做了兩件事情:更新了mysql.user表中的這個用戶的權限列表,更新後的數據如下:這個用戶的權限如下,從下圖中可以看出,該用戶用於所有的權限,也就是我們給授予的*.
  • MySQL mysqldump 數據導出詳解
    ,而mysqldump是導出數據過程中使用非常頻繁的一個工具;它自帶的功能參數非常多,文章中會列舉出一些常用的操作,在文章末尾會將所有的參數詳細說明列出來。databases db1 -F >/tmp/db1.sql6.只導出表結構不導出數據,--no-datamysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql7.跨伺服器導出導入數據mysqldump
  • 考前複習必備MySQL資料庫(關係型資料庫管理系統)
    命令:mysql -h遠程主機ip -uroot -p密碼退出mysql命名:exit回車,但是注意,想要成功連接到遠程主機,需要在遠程主機打開mysql遠程訪問權限。mysql和sqlite的區別mysql是web世界中使用最廣泛的資料庫伺服器。mysql是為伺服器端設計的資料庫,能承受高並發訪問,同時佔用的內存也遠遠大於SQLite。
  • 雲伺服器如何安裝mysql
    1) 添加 mysql 用戶和 mysql 用戶組命令如下:[root@localhost ~]# groupadd mysql#添加mysql用戶組[root@localhost ~]# useradd -g mysql mysql#添加mysql用戶,同時指定mysql用戶的初始組是mysql組這裡添加的 mysql 用戶和用戶組是稍後用來給
  • day06-python資料庫-mysql之安裝
    之前所學,數據要永久保存,比如用戶註冊的用戶信息,都是保存於文件中,而文件只能存在於某一臺機器上。如果我們不考慮從文件中讀取數據的效率問題,並且假設我們的程序所有的組件都運行在一臺機器上,那麼用文件存取數據,並沒有問題。
  • Linux中如何安裝MySQL,步驟如下
    1、將mysql安裝包從物理機拖到linux裡創建的task文件中,對mysql進行解壓,查看解壓後的效果2、進入到root下,檢查當前伺服器是否已經安裝有mysql,先卸載mysql(為了不與要安裝的版本發生衝突,就要先卸載之前的版本)
  • Mysql 手工注入【常規union查詢篇】
    ) 當前所在的資料庫user() 當前資料庫用戶權限@@datadir 數據文件的存放目錄@@basedir 資料庫的安裝路徑@@version_compile_os 宿主系統平臺是什麼@@hostname 當前機器的機器名,可不是域名哦null 特殊工具,因為它可以匹配任意數據類型,在遍歷欄位個數時可能會用到mysql>
  • mysql,mariadb 啟動出現 Can't Create Test File錯誤
    樹莓派系統安裝mariadb通過sudo apt install 安裝後,服務正常啟動,但默認的數據目錄是 /var/lib/mysql,所以修改數據目錄和日誌目錄,方便維護。新的數據目錄:/home/mysql/data,新日誌目錄 /home/mysql/log啟動服務時出現警告提示:[Warning] Can't create test file /home/mysql/data/club-wilspark-rb.lower-test
  • 實例分析:後臺權限設計
    權限模型具體內容解釋(1)上圖中1和N代表的是數量關係,1是代表只能有一個,N是可以無限個。例如一個組織架構下有很多用戶,但是一個用戶只能擁有一個組織機構,所以組織:用戶=1:N,其他也是以此類推即可。(2)根據RABC權限模型設計,為了更加方便權限的添加與管理,引入了用戶組、角色的概念,一個用戶可以是單獨某一類角色,也可以加入一個群組。
  • MySQL教程之MySQL定時備份資料庫
    一、MySQL數據備份1.1、 mysqldump命令備份數據在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現資料庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法: