欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL從視圖到用戶和權(quán)限管理操作

 更新時間:2025年09月26日 10:32:59   作者:學(xué)無止盡5  
文章介紹了MySQL視圖的概念、創(chuàng)建方法及使用注意事項(xiàng),強(qiáng)調(diào)其動態(tài)生成數(shù)據(jù)、簡化查詢、增強(qiáng)安全性的特點(diǎn),同時講解了用戶管理與權(quán)限分配,包括權(quán)限層級、最小權(quán)限原則及安全實(shí)踐,確保數(shù)據(jù)庫操作的安全可控,感興趣的朋友跟隨小編一起看看吧

一:視圖的定義

視圖是?個虛擬的表,它是基于?個或多個基本表或其他視圖的查詢結(jié)果集。視圖本?不存儲數(shù)據(jù),?是通過執(zhí)?查詢來動態(tài)?成數(shù)據(jù)。??可以像操作普通表?樣使?視圖進(jìn)?查詢、更新和管理。視圖本?并不占?物理存儲空間,它僅僅是?個查詢的邏輯表?,物理上它依賴于基礎(chǔ)表中的數(shù)據(jù)。

那么該怎么創(chuàng)建視圖呢?跟創(chuàng)建表時差不多

CREATE VIEW view_name [(column_list)] AS select_statement

二:創(chuàng)建好了那么該如何使用我們的視圖以及視圖的一些操作

例如:查詢用戶的所有信息和考試成績

select
s.id, s.name, s.sno, s.age, s.gender, s.enroll_date,
c.id, c.`name`,
co.id, co.`name`,
sc.id, sc.score
from student s, class c, course co, score sc
where s.class_id = c.id
and sc.student_id = s.id
and sc.course_id = co.id
order by s.id;

創(chuàng)建視圖,在select中使?別名

create view v_student_socre as
select s.id, s.name, s.sno, s.age, s.gender, s.enroll_date, 
c.id as class_id, c.`name` as class_name, 
co.id as course_id, co.`name` as course_name, sc.id as score_id, sc.score 
from student s, class c, course co, score sc
where s.class_id = c.id
and sc.student_id = s.id
and sc.course_id = co.id
order by s.id;

創(chuàng)建視圖,指定結(jié)果集中的列名

create view v_student_socre_v1 
(id, name, sno, age, gender, enroll_date, 
class_id, class_name,
course_id, course_name, 
score_id, score) as
select s.id, s.name, s.sno, s.age, s.gender, s.enroll_date, c.id, c.`name`, 
co.id, co.`name`, sc.id, sc.score from student s, class c, course co, score sc
where s.class_id = c.id
and sc.student_id = s.id
and sc.course_id = co.id;

最后查詢視圖

select * from v_student_socre;

select * from v_student_socre_v1;

但是要注意的是通過真實(shí)表修改數(shù)據(jù),會影響視圖

當(dāng)我們修改唐三藏的JAVA成績?yōu)?9分

我們再次查看視圖時,發(fā)現(xiàn)唐三藏這條記錄已被修改

同樣的是通過視圖修改數(shù)據(jù)也會影響基表

當(dāng)我們修改唐三藏的計(jì)算機(jī)?絡(luò)成績?yōu)?9分

update v_student_socre set score = 99 where score_id = 3;

可以發(fā)現(xiàn)更新失敗,因?yàn)閯?chuàng)建視圖時使?了order by 語句

小編整理了視圖修改會受到影響的點(diǎn)

  • 創(chuàng)建視圖時使?聚合函數(shù)的視圖
  • 創(chuàng)建視圖時使? DISTINCT
  • 創(chuàng)建視圖時使? GROUP BY 以及 HAVING ?句
  • 創(chuàng)建視圖時使? UNION 或 UNION ALL
  • 查詢列表中使??查詢
  • 在FROM?句中引?不可更新視圖

你要刪除視圖的話可以使用

drop view view_name;

相信很多人很期待那么視圖有哪些優(yōu)點(diǎn)呢?我將一一列舉
視圖的優(yōu)點(diǎn)

  1. 簡單性:視圖可以將復(fù)雜的查詢封裝成?個簡單的查詢。例如,針對?個復(fù)雜的多表連接查詢,可
    以創(chuàng)建?個視圖,??只需查詢視圖??需了解底層的復(fù)雜邏輯。
  2. 安全性:通過視圖,可以隱藏表中的敏感數(shù)據(jù)。例如,?個系統(tǒng)的??表中,可以創(chuàng)建?個不包含
    密碼列視圖,普通??只能訪問這個視圖,?不能訪問原始表。
  3. 邏輯數(shù)據(jù)獨(dú)?性:視圖提供了?種邏輯數(shù)據(jù)獨(dú)?性,即使底層表結(jié)構(gòu)發(fā)?變化,只需修改視圖定
    義,??需修改依賴視圖的應(yīng)?程序。使?到應(yīng)?程序與數(shù)據(jù)庫的解耦
  4. 重命名列:視圖允許??重命名列名,以增強(qiáng)數(shù)據(jù)可讀性。

三:用戶

數(shù)據(jù)庫服務(wù)安裝成功后默認(rèn)有?個root??,可以新建和操縱數(shù)據(jù)庫服務(wù)中管理的所有數(shù)據(jù)庫。在真實(shí)的使?過程中,通常每個應(yīng)?對應(yīng)著?個數(shù)據(jù)庫,我們只希望某個??只能操縱和管理當(dāng)前應(yīng)?對應(yīng)的那個數(shù)據(jù)庫,?不能操縱和管理其他應(yīng)?的數(shù)據(jù)庫,這時就可以添加?個??并指定??的權(quán)限

以這張圖片為例

root 可以訪問和操縱所有的數(shù)據(jù)庫:DB1, DB2, DB3, DB4
普通??1 只能訪問和操縱數(shù)據(jù)庫DB1
普通??2 只能訪問和操縱數(shù)據(jù)庫DB3
只讀??1 只能訪問數(shù)據(jù)庫DB3
只讀??2 只能訪問數(shù)據(jù)庫DB4

host: 允許登錄的主機(jī),相當(dāng)于?名單,如果是localhost,表?只能從本機(jī)登陸
user: ??名
*_priv:??擁有的權(quán)限
authentication_string: 加密后的??密碼

接下來開始創(chuàng)建我們的用戶

CREATE USER [IF NOT EXISTS] 'user_name'@'host_name' IDENTIFIED BY
'auth_string';

user_name: ??名,?單引號包裹,區(qū)分??寫
host_name: 主機(jī)或IP(段),?單引號包裹
auth_string: 真實(shí)密碼,有些密碼策略不允許使?簡單密碼

這里需要的注意的是

如果不指定host_name相當(dāng)于’user_name’@‘%’,%表?所有主機(jī)都可以連接到數(shù)據(jù)庫,強(qiáng)烈建議不要這樣設(shè)置,因?yàn)闀?dǎo)致嚴(yán)重的安全問題

user_name和host_name分別?單引號包裹,如果寫成 ‘user_name @host_name’,相當(dāng)
‘user_name@host_name’@'%

host_name可以通過??掩碼設(shè)置主機(jī)范圍

  • 198.0.0.0/255.0.0.0 : A段?絡(luò)中的任意?臺主機(jī)
  • 198.51.0.0/255.255.0.0: 198.51 B段?絡(luò)中的任意?臺主機(jī)
  • 198.51.100.0/255.255.255.0: 198.51.100 C段?絡(luò)中的任意?臺主機(jī)
  • 198.51.100.1 :只包含特定IP地址的主機(jī)

從MySQL 8.0.23開始,指定為IPv4地址的主機(jī)值可以使?CIDR表?法寫?,例如198.51.100.44/24

• 允許在IP地址中使?%通配符,?如,主機(jī)值’%'匹配任何主機(jī)名, 198.51.100.% 匹配198.51.100C段?絡(luò)中的任何主機(jī)。MySQL 8.0.35中已棄?,以后可能會刪除

四:權(quán)限管理

內(nèi)置的一些權(quán)限如下圖所示:

  • 權(quán)限層級關(guān)系
    • 全局權(quán)限(*.*)覆蓋數(shù)據(jù)庫權(quán)限(db.*
    • 數(shù)據(jù)庫權(quán)限覆蓋表級權(quán)限(db.table
    • 表級權(quán)限覆蓋列級權(quán)限(db.table(column)
    • 權(quán)限遵循"最小權(quán)限原則",應(yīng)按需分配最窄范圍的權(quán)限
  • 常用權(quán)限說明
    • 數(shù)據(jù)操作:SELECT(查詢)、INSERT(插入)、UPDATE(更新)、DELETE(刪除)
    • 結(jié)構(gòu)操作:CREATE(創(chuàng)建)、ALTER(修改)、DROP(刪除)
    • 管理權(quán)限:GRANT OPTION(授權(quán)他人)、SUPER(超級權(quán)限)、SHUTDOWN(關(guān)閉服務(wù))
  • 權(quán)限生效機(jī)制
    • 新授予的權(quán)限對已有連接不生效,需重新連接
    • FLUSH PRIVILEGES 命令用于從權(quán)限表重新加載權(quán)限設(shè)置
    • 推薦通過 GRANT/REVOKE 操作權(quán)限,而非直接修改 mysql 系統(tǒng)庫表
  • 安全建議
    • 避免給普通用戶授予 DROP、ALTER 等危險(xiǎn)權(quán)限
    • 限制 GRANT OPTION 權(quán)限的使用,防止權(quán)限擴(kuò)散
    • 定期審計(jì)權(quán)限,移除不再需要的權(quán)限
    • 敏感操作(如刪除表)建議使用專門的管理員賬號執(zhí)行

通過以上操作,可以實(shí)現(xiàn)對 MySQL 用戶權(quán)限的精細(xì)化管理,確保數(shù)據(jù)庫操作的安全性和可控性。

到此這篇關(guān)于MySQL從視圖到用戶和權(quán)限管理操作的文章就介紹到這了,更多相關(guān)mysql用戶權(quán)限管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論