MySQL視圖、用戶管理全面指南
前言:
本節(jié)內(nèi)容講述兩個(gè)板塊的內(nèi)容, 一個(gè)板塊是數(shù)據(jù)庫(kù)的視圖, 另一個(gè)板塊是mysql的用戶管理,主要講解了用戶的增刪, 以及查和修改密碼。 然后講述了用戶的賦予和收回權(quán)限。 下面開(kāi)始我們的學(xué)習(xí)吧!
視圖
認(rèn)識(shí)視圖
視圖是一種使用mysql表結(jié)構(gòu)的方式。同時(shí)視圖是一種虛擬表, 同真實(shí)的表一樣,視圖也包含一系列帶有名稱(chēng)的列和行數(shù)據(jù)。視圖和基表是兩個(gè)對(duì)應(yīng)的概念,其中視圖是虛擬表,基表就是原本的保存在數(shù)據(jù)庫(kù)中的表。

就比如,上面這五張表, 就是基表。
然后我們使用內(nèi)連接,連接emp和dept,查出來(lái)的那個(gè)結(jié)果其實(shí)也是一張表。

然后呢,未來(lái)我們不想再重新查這個(gè)表,而是讓這個(gè)表一直存在著,因?yàn)槲覀円恢币谩?這個(gè)時(shí)候,我們就可以讓上面這個(gè)表變成視圖。


然后就多了一張表,我們說(shuō)視圖是虛表,我們修改視圖里面的表會(huì)不會(huì)影響我們?cè)砟?
這里做一下實(shí)驗(yàn),用update更新一下數(shù)據(jù):


首先能夠觀察到視圖里面的被改了。那么原表里面的呢?

原表中的也被改了。所以我們就可以推測(cè),視圖其實(shí)就是一張?zhí)摫恚晥D和原表是聯(lián)通的,其中的數(shù)據(jù)并沒(méi)有持久到磁盤(pán)。
視圖的規(guī)則與限制
- 視圖與表一樣,必須唯一命名。
- 創(chuàng)建視圖數(shù)目無(wú)限制,但要考慮復(fù)雜查詢創(chuàng)建為視圖之后的性能影響。
- 視圖不能添加索引,也不能有關(guān)聯(lián)的觸發(fā)器或者默認(rèn)值。
- 視圖可以提高安全性,必須有足夠的訪問(wèn)權(quán)限。
- order by可以使用在試圖當(dāng)中,但是如果從該視圖檢索數(shù)據(jù)select中也含有order by,那么該視圖中的order by將被覆蓋。
- 視圖可以與表一起使用。它其實(shí)就是表。
用戶的增刪查改
一般情況下,我們使用數(shù)據(jù)庫(kù),下面默認(rèn)就有一個(gè)數(shù)據(jù)庫(kù)mysql:

這個(gè)數(shù)據(jù)庫(kù)里面有許許多多的表:

其中, 保存我們用戶信息的就是user表, 下面是查表后的root信息:


其中User就是用戶的名稱(chēng),然后Host就是允許用戶當(dāng)前從哪里進(jìn)行登錄。然后其中下面的字段就是權(quán)限信息。然后后面有一個(gè)字段是密碼, 這個(gè)密碼是加密的, 只有mysql能夠看懂, 也就是紅框框的內(nèi)容。
創(chuàng)建用戶
信息太多我們就直接查兩個(gè)字段: User和host

我們?cè)趍ysql里面開(kāi)賬號(hào),不僅需要在mysql里面創(chuàng)建用戶的名稱(chēng)和密碼,還要規(guī)定用戶能夠從哪里登錄。所以我們想要?jiǎng)?chuàng)建一個(gè)用戶,最簡(jiǎn)單的方法就是使用insert向里面插入一個(gè)數(shù)據(jù)。但是由于屬性很多,一般不推薦這樣寫(xiě),所以就使用創(chuàng)建用戶的sql語(yǔ)句:
create user '用戶名'@'登陸主機(jī)/ip'identified by '密碼';
- 這里后面的登錄主機(jī)不能隨便寫(xiě)!!!一般就寫(xiě)127.0.0.1本地環(huán)回或者localhost,直接在本地登錄。
- 想要?jiǎng)?chuàng)建一個(gè)能連接任意主機(jī)的用戶就是使用%,不推薦 。
這里創(chuàng)建一個(gè)新用戶:


然后我們就看到,我們能能夠看到的數(shù)據(jù)庫(kù)和我們r(jià)oot能夠看到的數(shù)據(jù)庫(kù),完全不一樣。這是因?yàn)樾掠脩魶](méi)有對(duì)應(yīng)的權(quán)限!
刪除用戶
刪掉用戶可以使用root直接將User表中的數(shù)據(jù)刪掉。但是不推薦。這里同樣可以使用sql語(yǔ)句:
drop user 用戶名@登錄ip;

修改密碼
修改密碼一般可以自己該自己或者root改自己, 就是使用:
set password = password(密碼); //自己改自己。
set password for '用戶'@'ip' = password(密碼);//root改別人
用戶的權(quán)限
我們用戶新創(chuàng)建出來(lái)的時(shí)候是看不到這些數(shù)據(jù)庫(kù)的:

所以就需要我們進(jìn)行賦權(quán):
給與權(quán)限
grant 權(quán)限列表 on 庫(kù).表 to '用戶名'@'登錄ip';


然后我們就能看到這個(gè)表,并且能夠進(jìn)入了:

我們可以把所有表的權(quán)限都給用戶:
然后我們就能看到所有的表了?。?!
收回權(quán)限
也可以回收權(quán)限r(nóng)evoke:
revoke 權(quán)限 on 數(shù)據(jù)庫(kù)表名 from '用戶名'@'主機(jī)ip';

然后我們可以使用show grants查看某一個(gè)用戶@登錄ip的所有賦予權(quán)限:
show grants for '用戶名'@'登錄ip';

總結(jié)
到此這篇關(guān)于MySQL視圖、用戶管理的文章就介紹到這了,更多相關(guān)MySQL視圖、用戶管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
面試被問(wèn)select......for update會(huì)鎖表還是鎖行
select … for update 是我們常用的對(duì)行加鎖的一種方式,那么select......for update會(huì)鎖表還是鎖行,本文就詳細(xì)的來(lái)介紹一下,感興趣的可以了解一下2021-11-11
Mysql數(shù)據(jù)庫(kù)性能優(yōu)化一
今天,數(shù)據(jù)庫(kù)的操作越來(lái)越成為整個(gè)應(yīng)用的性能瓶頸了,這點(diǎn)對(duì)于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫(kù)的性能,這并不只是DBA才需要擔(dān)心的事,而這更是我們程序員需要去關(guān)注的事情2016-04-04
explain命令為什么可能會(huì)修改MySQL數(shù)據(jù)
這篇文章主要介紹了explain命令為什么可能會(huì)修改MySQL數(shù)據(jù),幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-12-12
mybatis 實(shí)現(xiàn) SQL 查詢攔截修改詳解
這篇文章主要介紹了mybatis 實(shí)現(xiàn) SQL 查詢攔截修改詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
mysql的中文數(shù)據(jù)按拼音排序的2個(gè)方法
這篇文章主要介紹了mysql的中文數(shù)據(jù)按拼音排序的2個(gè)方法,用于一些特殊環(huán)境,需要的朋友可以參考下2014-06-06



