最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL視圖與用戶權(quán)限管理從入門到精通

 更新時間:2026年04月24日 09:46:50   作者:長安城沒有風(fēng)  
視圖是虛擬表,可動態(tài)生成數(shù)據(jù)且與基表同步,介紹其創(chuàng)建、刪除及規(guī)則限制,用戶管理方面,闡述用戶信息存儲、創(chuàng)建、刪除及密碼修改,還講解數(shù)據(jù)庫權(quán)限的授權(quán)與收權(quán)操作,這篇文章主要介紹了MySQL視圖與用戶權(quán)限管理從入門到精通的相關(guān)資料,需要的朋友可以參考下

1. 視圖

1.1 視圖的基本概念

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

1.2 試圖的基本操作

1.2.1 創(chuàng)建視圖

create view 列名1,列名2,列名3 as select 查詢語句...

view 是視圖的關(guān)鍵字

1.2.2 使用視圖

??例如:只查詢用戶的姓名和總分(隱藏學(xué)號和各科成績)

# 使?真實表進(jìn)?查詢
select s.name, sum(sc.score) total from student s, score sc 
where s.id = sc.student_id
group by sc.student_id order by s.id;

-- 缺點:可以隨時在select關(guān)鍵字后加上學(xué)號和各科成績字段,會暴露學(xué)生信息,不安全
# 創(chuàng)建視圖
create view v_student_total_points as
select s.id, s.name, sum(sc.score) total from student s, score sc 
where s.id = sc.student_id 
group by s.id order by s.id;

-- 使用視圖進(jìn)行查詢
select * from v_student_total_points;
+-----------+-------+
| name | total |
+-----------+-------+
| 唐三藏 | 469 |
| 孫悟空 | 179.5 |
| 豬悟能 | 200 |
| 沙悟凈 | 218 |
| 宋江 | 118 |
| 武松 | 178 |
| 李逹 | 172 |
+-----------+-------+
-- 只能查詢出姓名和總分,進(jìn)一步保護(hù)了學(xué)生的個人信息

??例如:視圖和真實表進(jìn)行表連接查詢

select * from v_student_total_points v, student s where v.id = s.id;

-- 視圖本質(zhì)上是一張?zhí)摂M的表,所以可以用視圖與真實表進(jìn)行表連接查詢

1.2.3 修改數(shù)據(jù)

  • 通過真實表修改數(shù)據(jù),會影響視圖
# 修改唐三藏的JAVA成績?yōu)?9分
 update score set score = 99 where student_id = 1 and course_id = 1;

# 查詢視圖,發(fā)現(xiàn)唐三藏這條記錄已被修改
select * from v_student_socre;
  • 通過視圖修改數(shù)據(jù)會影響基表
# 更新視圖
update v_student_socre_v1 set score = 99 where score_id = 3;

# 是看真實表數(shù)據(jù)已被修改
select * from score where student_id = 1 and course_id = 5;

注意事項:

1. 修改真實表會影響視圖,修改視圖同樣也會影響真實表

2. 以下視圖不可更新:

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

1.2.4 刪除視圖

# 語法
drop view 視圖名;

1.3 視圖的優(yōu)點

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

2. 用戶與權(quán)限管理

數(shù)據(jù)庫服務(wù)安裝成功后默認(rèn)有一個root用戶,可以新建和操縱數(shù)據(jù)庫服務(wù)中管理的所有數(shù)據(jù)庫。在真

實的使用過程中,通常每個應(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

2.1 用戶

2.1.1 查看用戶

-- 選擇數(shù)據(jù)庫
use mysql;

-- 查看表結(jié)構(gòu)
desc user;

-- 查看用戶表
select * from user;

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

2.1.2 創(chuàng)建用戶

create user if  not exists 'user_name'@'host_name' identified by 'auth_string';
  • user_name: 用戶名,用單引號包裹,區(qū)分大小寫
  • host_name: 主機(jī)或IP(段),?單引號包裹
  • auth_string: 真實密碼,有些密碼策略不允許使用簡單密碼

例如:創(chuàng)建名為zhuxulong 密碼為123456 的賬戶

create user if  not exists 'zhuxulong'@'172.20.109.85' identified by '123456';

注意事項:

  • 如果不指定host_name相當(dāng)于’user_name’@‘%’, %表示所有主機(jī)都可以連接到數(shù)據(jù)庫,強(qiáng)烈建
    議不要這樣設(shè)置,因為會導(dǎo)致嚴(yán)重的安全問題
  • user_name和host_name分別用單引號包裹,如果寫成’user_name@host_name’, 相當(dāng)于’user_name@host_name’@‘%’
  • host_name可以通過子網(wǎng)掩碼設(shè)置主機(jī)范圍
    A: 198.0.0.0 : A段網(wǎng)絡(luò)中的任意一臺主機(jī)
    B: 198.51.0.0 B段網(wǎng)絡(luò)中的任意一臺主機(jī)’
    C: 198.51.100.0 C段網(wǎng)絡(luò)中的任意一臺主機(jī)
    D: 198.51.100.1 :只包含特定IP地址的主機(jī)

2.1.3 修改密碼

# 為指定??設(shè)置密碼 【推薦】
ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'auth_string';

# 為指定??設(shè)置密碼
SET PASSWORD FOR 'user_name'@'host_name' = 'auth_string';

# 為當(dāng)前登錄??設(shè)置密碼
SET PASSWORD = 'auth_string';

2.1.4 刪除用戶

DROP USER [IF EXISTS] 'user_name'@'host_name'[, ...];

2.2 權(quán)限與授權(quán)

MySQL內(nèi)置支持的權(quán)限列表

2.2.1 給用戶授權(quán)

剛剛創(chuàng)建的用戶沒有任何權(quán)限,我們需要手動為新用戶授權(quán).

grant 權(quán)限名 on priv_level to 'user_name'@'host_name' [WITH GRANT OPTION]

權(quán)限名:根據(jù)類型,參考根據(jù)列表4.1中的Privilege列

  • priv_level: * | . | db_name.* | db_name.tbl_name | tbl_name,比如*.*表示所有數(shù)據(jù)庫下的所有表
  • ‘user_name’@‘host_name’:指定用戶
  • [WITH GRANT OPTION]:可選,允許用戶將自己的權(quán)限授權(quán)給其它用戶

示例: 為剛剛創(chuàng)建的zhuxulong用戶授予test數(shù)據(jù)庫student表的select權(quán)限

grant select on  test.student to 'zhuxulong'@'172.20.109.85';

2.2.2 回收用戶授權(quán)

revoke 權(quán)限名  on 數(shù)據(jù)庫名.表名 from 'user_name'@'host_name';

總結(jié) 

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

相關(guān)文章

  • 數(shù)據(jù)從MySQL遷移到Oracle 需要注意什么

    數(shù)據(jù)從MySQL遷移到Oracle 需要注意什么

    將數(shù)據(jù)從MySQL遷移到Oracle,大家需要注意什么?Oracle移植到mysql,又需要注意什么?如何有效解決移植過程的問題,為了數(shù)據(jù)庫的兼容性我們又該注意些什么?感興趣的小伙伴們可以參考一下
    2016-11-11
  • MySql 5.6.14 winx64配置方法(免安裝版)

    MySql 5.6.14 winx64配置方法(免安裝版)

    這篇文章主要介紹了MySql 5.6.14 winx64配置方法(免安裝版)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • mysql全量備份和快速恢復(fù)的方法整理

    mysql全量備份和快速恢復(fù)的方法整理

    在本篇文章里小編給各位整理的是關(guān)于mysql全量備份和快速恢復(fù)的方法整理內(nèi)容,需要的朋友們可以參考下。
    2020-03-03
  • 使用MyDumper重建MySQL副本的實現(xiàn)

    使用MyDumper重建MySQL副本的實現(xiàn)

    本文主要介紹了MyDumper重建MySQL副本的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • MySQL5.x版本亂碼問題解決方案

    MySQL5.x版本亂碼問題解決方案

    這篇文章主要介紹了MySQL5.x版本亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 詳解一條sql語句在mysql中是如何執(zhí)行的

    詳解一條sql語句在mysql中是如何執(zhí)行的

    這篇文章主要介紹了一條sql語句在mysql中是如何執(zhí)行的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Mysql查看死鎖與解除死鎖的深入講解

    Mysql查看死鎖與解除死鎖的深入講解

    這篇文章主要給大家介紹了關(guān)于Mysql查看死鎖與解除死鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 分享MySQL的自動化安裝部署的方法

    分享MySQL的自動化安裝部署的方法

    線上的MySQL一般都采用源碼編譯,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務(wù)器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太低效了,本文討論MySQL的自動化安裝部署。
    2014-07-07
  • MySQL的my.cnf配置文件解析

    MySQL的my.cnf配置文件解析

    本文解析了MySQL的my.cnf配置文件,其中包含了多個段,每個段定義了一組特定的配置選項,包括客戶端配置、服務(wù)器配置、命令行客戶端默認(rèn)行為等,感興趣的可以了解一下
    2024-10-10
  • Mysql 插入中文及中文查詢 (修改+調(diào)試)

    Mysql 插入中文及中文查詢 (修改+調(diào)試)

    此程序從pudn上下載,但源程序編譯都通不過,同時又有致命錯誤,
    2009-07-07

最新評論

叶城县| 武定县| 会昌县| 吉林省| 九龙县| 渝中区| 德州市| 岳西县| 莱西市| 大关县| 普定县| 新竹市| 慈利县| 奈曼旗| 怀柔区| 宿松县| 军事| 茌平县| 融水| 兴海县| 新竹县| 越西县| 久治县| 峨眉山市| 简阳市| 永福县| 喀什市| 平邑县| 麻江县| 东阳市| 叶城县| 九江县| 阿拉善左旗| 宜春市| 临江市| 江孜县| 安岳县| 介休市| 崇礼县| 滦平县| 大兴区|