亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL用戶和數(shù)據(jù)權(quán)限管理詳解

 更新時(shí)間:2022年08月25日 09:58:17   作者:遇安.112  
這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)庫(kù)管理中的用戶和數(shù)據(jù)權(quán)限管理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下

1、管理用戶

1.1、添加用戶

可以使用CREATE USER語(yǔ)句添加一個(gè)或多個(gè)用戶,并設(shè)置相應(yīng)的密碼

語(yǔ)法格式:

CREATE USER 用戶名 [IDENTIFIED BY [PASSWORD]'密碼']

CREATE USER用于創(chuàng)建新的MySQL賬戶。CREATE USER會(huì)在系統(tǒng)本身的mysql數(shù)據(jù)庫(kù)的user表中添加一個(gè)新記錄。要使用CREATE USER,必須擁有mysql數(shù)據(jù)庫(kù)的全局CREATE USER權(quán)限或INSERT權(quán)限。如果賬戶已經(jīng)存在,則出現(xiàn)錯(cuò)誤(報(bào)錯(cuò))。

例:添加一個(gè)新用戶usr1,密碼為123456 

CREATE USER usr1@localhost IDENTIFIED BY'123456';

在用戶名的后面聲明了關(guān)鍵字localhost。該關(guān)鍵字指定用戶創(chuàng)建所使用的MySQL服務(wù)器來(lái)自于主機(jī)。如果一個(gè)用戶名和主機(jī)名中包含特殊符號(hào)_或通配符%,則需要用單引號(hào)將其括起,%表示一組主機(jī)。

1.2、刪除用戶

語(yǔ)法格式:

DROP USER 用戶名

要使用該語(yǔ)句,必須有mysql數(shù)據(jù)庫(kù)的全局CREATE USER權(quán)限或DELETE權(quán)限。DROP USER語(yǔ)句用于刪除一個(gè)或多個(gè)MySQL賬戶,并取消其權(quán)限。

例:刪除用戶usr1 

DROP USER usr1@localhost;

1.3、修改用戶名

語(yǔ)法格式:

RENAME USER 舊用戶名 TO 新用戶名

要使用該語(yǔ)句,必須有全局CREATE USER權(quán)限或mysql數(shù)據(jù)庫(kù)的UPDATE權(quán)限。如果舊賬戶不存在或者新賬戶已存在,則會(huì)出現(xiàn)錯(cuò)誤(報(bào)錯(cuò))。該語(yǔ)句用于對(duì)原有MySQL賬戶進(jìn)行重命名,可以一次對(duì)多個(gè)用戶更名。

例:將用戶usr1和usr2的名字分別修改為user1和user2 

RENAME USER
usr1@localhost TO user1@localhost,
usr2@localhost TO user2@localhost;

1.4、修改密碼

語(yǔ)法格式:

SET PASSWORD [ FOR 用戶名 ]=PASSWORD('新密碼')

如果不加FOR用戶名,表示修改當(dāng)前用戶的密碼。加了FOR用戶名則是修改當(dāng)前主機(jī)上的特定用戶的密碼。用戶名的值必須以u(píng)ser_name@host_name的格式給定。

例:將用戶user1的密碼修改為king 

SET PASSWORD FOR user1@localhost=PASSWORD('king');

2、授予權(quán)限和回收權(quán)限

2.1、授予權(quán)限

新的SQL用戶不允許訪問(wèn)屬于其他SQL用戶的表,也不能立即創(chuàng)建自己的表,它必須被授權(quán),可以授予的權(quán)限有以下幾組:

1、列權(quán)限:和表中的一個(gè)具體列相關(guān)。例如,使用UPDATE語(yǔ)句更新表Book書號(hào)列值的權(quán)限。

2、表權(quán)限:和一個(gè)具體表中的所有數(shù)據(jù)相關(guān)。例如,使用SELECT語(yǔ)句查詢表Book所有數(shù)據(jù)的權(quán)限。

3、數(shù)據(jù)庫(kù)權(quán)限:和一個(gè)具體的數(shù)據(jù)庫(kù)中所有表相關(guān)。例如,在已有的Bookstore數(shù)據(jù)庫(kù)中創(chuàng)建新表的權(quán)限。

4、用戶權(quán)限:和MySQL所有的數(shù)據(jù)庫(kù)相關(guān)。例如,刪除已有的數(shù)據(jù)庫(kù)或者創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)的權(quán)限。

給某用戶授予權(quán)限可以使用GRANT語(yǔ)句。使用SHOW GRANTS語(yǔ)句可以查看當(dāng)前賬戶擁有的權(quán)限。

語(yǔ)法格式:

GRANT 權(quán)限1[(列名列表1)][,權(quán)限2[(列名列表2)]...
ON [目標(biāo)]{表名 | * | *.* | 庫(kù)名.*}
TO 用戶1 [IDENTIFIED BY [PASSWORD]'密碼1']
[,用戶2 [IDENTIFIED BY [PASSWORD]'密碼2']]...
[WITH 權(quán)限限制1[權(quán)限限制2]...]

2.1.1、授予表權(quán)限

授予表權(quán)限時(shí),權(quán)限可以是以下值:

1、SELECT:授予用戶使用SELECT語(yǔ)句訪問(wèn)特定表(或視圖)的權(quán)力。對(duì)于視圖,用戶必須對(duì)視圖中指定的每個(gè)表(或視圖)都有SELECT權(quán)限。

2、INSERT:授予用戶使用INSERT語(yǔ)句向一個(gè)特定表中添加行的權(quán)力

3、DELETE:授予用戶使用DELETE語(yǔ)句向一個(gè)特定表中刪除行的權(quán)力

4、UPDATE:授予用戶使用UPDATE語(yǔ)句修改特定表中值的權(quán)力

5、REFERENCES:授予用戶創(chuàng)建一個(gè)外鍵來(lái)參照特定的表的權(quán)力

6、CREATE:授予用戶使用特定的名字創(chuàng)建一個(gè)表的權(quán)力

7、ALTER:授予用戶使用ALTER TABLE語(yǔ)句修改表的權(quán)力

8、INDEX:授予用戶在表上定義索引的權(quán)力

9、DROP:授予用戶刪除表的權(quán)力

10、ALL或ALL PRIVILEGES:表示所有權(quán)限

在授予表權(quán)限時(shí),ON關(guān)鍵字后面跟表名,指定授予權(quán)限的為表名或視圖名

例:授予用戶user1在Book表上的SELECT權(quán)限 

USE Bookstore;
GRANT SELECT
ON Book
TO user1@localhost;

這里假設(shè)是在root用戶輸入了這些語(yǔ)句,這樣用戶user1就可以使用SELECT語(yǔ)句來(lái)查詢Book表,而不管是誰(shuí)創(chuàng)建了該表。

若在TO子句中給存在的用戶指定密碼,則新密碼將原密碼覆蓋。如果權(quán)限授予了一個(gè)不存在的用戶,MySQL會(huì)自動(dòng)執(zhí)行一條CREATE USER語(yǔ)句來(lái)創(chuàng)建這個(gè)用戶,但必須為該用戶指定密碼。

例:用戶liu和zhang不存在,授予他們?cè)贐ook表上的SELECT和UPDATE權(quán)限 

GRANT SELECT,UPDATE
ON Book
TO liu@localhost IDENTIFIED BY'123456',
zhang@localhost IDENTIFIED BY'123';

2.1.2、授予列權(quán)限

對(duì)于列權(quán)限,權(quán)限的值只能取SELECT、INSERT和UPDATE。權(quán)限的后面需要加上列名列表。

例:授予user1在Book表上的圖書編號(hào)列和書名列的UPDATE權(quán)限。

GRANT UPDATE(圖書編號(hào),書名)
ON Book
TO user1@localhost;

2.1.3、授予數(shù)據(jù)庫(kù)權(quán)限

表權(quán)限適用于一個(gè)特定的表,MySQL還支持針對(duì)整個(gè)數(shù)據(jù)庫(kù)的權(quán)限。授予數(shù)據(jù)庫(kù)權(quán)限時(shí),權(quán)限可以是以下值:

1、SELECT:授予用戶使用SELECT語(yǔ)句訪問(wèn)特定數(shù)據(jù)庫(kù)中所有表和視圖的權(quán)力

2、INSERT:授予用戶使用INSERT語(yǔ)句向特定數(shù)據(jù)庫(kù)所有表中添加行的權(quán)力

3、DELETE:授予用戶使用DELETE語(yǔ)句在特定數(shù)據(jù)庫(kù)所有表中刪除行的權(quán)力

4、UPDATE:授予用戶使用UPDATE語(yǔ)句更新特定數(shù)據(jù)庫(kù)所有表中值的權(quán)力

5、REFERENCES:授予用戶創(chuàng)建指向特定數(shù)據(jù)庫(kù)中的表外鍵的權(quán)力

6、CREATE:授予用戶使用CREATE TABLE語(yǔ)句在特定數(shù)據(jù)庫(kù)中創(chuàng)建新表的權(quán)力

7、ALTER:授予用戶使用ALTER TABLE語(yǔ)句修改特定數(shù)據(jù)庫(kù)中所有表的結(jié)構(gòu)的權(quán)力

8、INDEX:授予用戶在特定數(shù)據(jù)庫(kù)中的所有表上定義和刪除索引的權(quán)力

9、DROP:授予用戶刪除特定數(shù)據(jù)庫(kù)中所有表和視圖的權(quán)力

10、CREATE TEMPORARY TABLES:授予用戶在特定數(shù)據(jù)庫(kù)中創(chuàng)建臨時(shí)表的權(quán)力

11、CREATE VIEW:授予用戶在特定數(shù)據(jù)庫(kù)中創(chuàng)建新視圖的權(quán)力

12、SHOW VIEW:授予用戶查看特定數(shù)據(jù)庫(kù)中已有視圖的視圖定義的權(quán)力

13、CREATE ROUTINE:授予用戶為特定數(shù)據(jù)庫(kù)創(chuàng)建存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)的權(quán)力

14、ALTER ROUTINE:授予用戶更新和刪除數(shù)據(jù)庫(kù)中已有存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)的權(quán)力

15、EXECUTE ROUTINE:授予用戶調(diào)用特定數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)的權(quán)力

16、LOOK TABLES:授予用戶鎖定特定數(shù)據(jù)庫(kù)中已有表的權(quán)力

17、ALL或ALL PRIVILEGES:表示以上所有權(quán)限

在GRANT語(yǔ)法格式中,授予數(shù)據(jù)庫(kù)權(quán)限時(shí)ON關(guān)鍵字后面跟*和“庫(kù)名.*”。*表示當(dāng)前數(shù)據(jù)庫(kù)中的所有表。“庫(kù)名.*”表示某個(gè)數(shù)據(jù)庫(kù)中的所有表。

例:授予user1在Bookstore數(shù)據(jù)庫(kù)中所有表的SELECT權(quán)限 

GRANT SELECT
ON Bookstore.*
TO user1@localhost;

2.1.4、授予用戶權(quán)限

最有效率的權(quán)限就是用戶權(quán)限,可以將授予數(shù)據(jù)庫(kù)的權(quán)限直接授予用戶,使用戶獲得對(duì)服務(wù)器上所有數(shù)據(jù)庫(kù)的該權(quán)限。

MySQL授予用戶權(quán)限時(shí)權(quán)限還可以是以下值:

1、CREATE USER:授予用戶創(chuàng)建和刪除新用戶的權(quán)限

2、SHOW DATABASES:授予用戶使用SHOW DATABASES語(yǔ)句查看所有已有數(shù)據(jù)庫(kù)的定義的權(quán)力

在GRANT語(yǔ)法格式中,授予用戶權(quán)限時(shí)ON子句中使用“*.*”,表示所有數(shù)據(jù)庫(kù)的所有表

例:授予user2對(duì)所有數(shù)據(jù)庫(kù)中所有表的CREATE、ALTERT和DROP權(quán)限 

GRANT CREATE,ALTER,DROP
ON *.*
TO user2@localhost IDENTIFIED BY'123456';

例:授予user2創(chuàng)建新用戶的權(quán)限

GRANT CREATE USER
ON *.*
TO user2@localhost;

2.2、權(quán)限的轉(zhuǎn)移和限制

GRANT語(yǔ)句的最后可以使用WITH子句。如果指定權(quán)限限制為GRANT OPTION,則表示TO子句中指定的所有用戶都有把自己所擁有的權(quán)限授予其他用戶的權(quán)力,而不管其他用戶是否擁有該權(quán)限。

 例:授予user3在Book表上的SELECT權(quán)限,并允許其將該權(quán)限授予其他用戶

GRANT SELECT
ON Bookstore.Book
TO user3@localhost IDENTIFIED BY'123456'
WITH GRANT OPTION;

使用了WITH GRANT OPTION子句后,如果user3在該表上還擁有其他權(quán)限,他可以將其他權(quán)限也授予其他用戶而不僅限于SELECT。

WITH子句后的權(quán)限限制也可以對(duì)一個(gè)用戶授予使用限制,其中,MAX_QUERIES_PER_HOUR次數(shù)表示每小時(shí)可以查詢數(shù)據(jù)庫(kù)的次數(shù)。

MAX_CONNECTIONS_PER_HOUR次數(shù)表示每小時(shí)可以連接數(shù)據(jù)庫(kù)的次數(shù)。

MAX_UPDATES_PES_HOUR次數(shù)表示每小時(shí)可以修改數(shù)據(jù)庫(kù)的次數(shù)。

MAX_USER_CONNECTIONS次數(shù)表示同時(shí)連接MySQL的最大用戶數(shù)。

次數(shù)是一個(gè)數(shù)值,對(duì)于前3個(gè)權(quán)限限制指定,次數(shù)如果為0則表示不起限制作用。

例:授予D每小時(shí)只能處理一條SELECT語(yǔ)句的權(quán)限 

GRANT SELECT
ON Book
TO D@localhost
WITH MAX_QUERIES_PER_HOUR 1;

2.3、回收權(quán)限

要從一個(gè)用戶回收權(quán)限,但不從mysql數(shù)據(jù)庫(kù)的user表中刪除該用戶,可以使用REVOKE語(yǔ)句,該語(yǔ)句和GRANT語(yǔ)句格式相似,但具有相反的效果。要使用REVOKE語(yǔ)句,用戶必須擁有mysql數(shù)據(jù)庫(kù)的全局CREATE USER權(quán)限或UPDATE權(quán)限。

語(yǔ)法格式:

REVOKE 權(quán)限[(列名列表)]...
ON {表名 | * | *.* | 庫(kù)名.* }
FROM 用戶...  

REVOKE ALL PRIVILEGES,GRANT OPTION FROM 用戶

第一種格式用來(lái)回收用戶的某些特定權(quán)限,第二種格式回收用戶的所有權(quán)限

例:回收用戶user在Book表上的SELECT權(quán)限

REVOKE SELECT
ON Book
FROM user@localhost;

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

相關(guān)文章

最新評(píng)論