MySQL中的用戶和權(quán)限管理詳解(看這一篇就足夠了!)
前言:
在 MySQL 數(shù)據(jù)庫(kù)管理中,用戶管理是確保數(shù)據(jù)安全和系統(tǒng)穩(wěn)定的關(guān)鍵環(huán)節(jié),通過(guò)合理的用戶權(quán)限控制,管理員可以有效限制用戶訪問(wèn),防止非法操作和數(shù)據(jù)泄露,本文將介紹 MySQL 中常見的用戶管理操作,包括用戶創(chuàng)建、密碼修改、刪除用戶和權(quán)限管理等。
在正式開始講解之前,先讓我們看一下本文大致的講解內(nèi)容:

1.查看用戶
首先先讓我們學(xué)習(xí)用戶方面的知識(shí),說(shuō)到用戶,我們就需要學(xué)會(huì)如何去查看用戶,在 MySQL 中,所有的用戶信息存儲(chǔ)在 mysql 系統(tǒng)數(shù)據(jù)庫(kù)中的 user 表中,我們想要查看當(dāng)前數(shù)據(jù)庫(kù)的所有用戶,可以通過(guò) SELECT 語(yǔ)句從該表中查詢相關(guān)數(shù)據(jù)。
例子:
SELECT user, host FROM mysql.user;
代碼解釋:
這條查詢語(yǔ)句將返回當(dāng)前 MySQL 系統(tǒng)中所有用戶的名稱和主機(jī)信息,字段
user表示用戶名,而字段host表示該用戶允許從哪些主機(jī)進(jìn)行連接。
以上就是在MySQL中查看用戶的操作了?。?!
2.創(chuàng)建用戶
學(xué)完了MySQL中查看用戶的操作之后,接下來(lái)讓我們學(xué)習(xí)一下如何在MySQL中創(chuàng)建用戶,在 MySQL 中創(chuàng)建新用戶時(shí),通常使用 CREATE USER 語(yǔ)句,通過(guò)該語(yǔ)句,我們可以為新用戶分配名稱、設(shè)置密碼并指定哪些主機(jī)能夠連接。
創(chuàng)建用戶語(yǔ)法:
CREATE USER [IF NOT EXISTS] 'user_name'@'host_name' IDENTIFIED BY 'auth_string';
代碼解釋:
- user_name:指定新用戶的用戶名。
- host_name:指定該用戶的連接主機(jī)范圍,可以是具體的 IP 地址,也可以是通配符
%,表示允許從任何主機(jī)連接。- auth_string:為用戶設(shè)置的密碼。
- IF NOT EXISTS:為可選,用于避免在創(chuàng)建用戶時(shí)出現(xiàn)重復(fù)錯(cuò)誤,如果指定的用戶已經(jīng)存在,系統(tǒng)將不會(huì)拋出錯(cuò)誤。
——了解完了創(chuàng)建用戶的語(yǔ)法之后,現(xiàn)在讓我們使用兩個(gè)案例來(lái)進(jìn)一步加深理解:
例子1:創(chuàng)建一個(gè)允許從任何主機(jī)連接的用戶
CREATE USER 'new_user'@'%' IDENTIFIED BY 'password123';
代碼解釋:
這條語(yǔ)句創(chuàng)建了一個(gè)名為
new_user的用戶,密碼是password123,并允許該用戶從任何主機(jī)連接到 MySQL 服務(wù)器,%表示通配符,允許從任何 IP 地址進(jìn)行連接。
例子2:創(chuàng)建一個(gè)僅允許從本地主機(jī)連接的用戶
CREATE USER 'local_user'@'localhost' IDENTIFIED BY 'local_password';
代碼解釋:
這條語(yǔ)句創(chuàng)建了一個(gè)名為
local_user的用戶,密碼為local_password,并且該用戶僅能從本地主機(jī)(即數(shù)據(jù)庫(kù)服務(wù)器所在的機(jī)器)進(jìn)行連接,localhost表示只有來(lái)自同一機(jī)器的連接才會(huì)被允許。
——通過(guò)上述的兩個(gè)案例我們對(duì)MySQL中的創(chuàng)建用戶有了更進(jìn)一步的理解,那么我們?cè)趧?chuàng)建完成之后,如何去檢查用戶創(chuàng)建情況呢?
在創(chuàng)建完用戶后,我們可以通過(guò)以下查詢語(yǔ)句檢查新用戶是否已經(jīng)成功添加:
SELECT user, host FROM mysql.user;
代碼解釋:
這個(gè)查詢將列出所有用戶及其對(duì)應(yīng)的主機(jī)信息,幫助我們確認(rèn)
new_user和local_user是否已正確創(chuàng)建。
以上就是創(chuàng)建用戶的全部?jī)?nèi)容了?。?!
3.修改密碼
我們知道,一個(gè)用戶不可能讓任何人都可以使用其身份進(jìn)行操作,這時(shí)我們就要使用到密碼,那么如何去修改密碼呢?以下為修改密碼的三種方式。
(1)使用ALTER USER修改密碼:
ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'new_password';
代碼解釋:
這是推薦的方式,其能夠確保密碼更新后即刻生效,
ALTER USER是 MySQL 5.7 及更高版本支持的命令,適用于修改用戶的認(rèn)證方式和密碼。
(2)使用SET PASSWORD修改當(dāng)前用戶密碼:
SET PASSWORD = PASSWORD('new_password');
代碼解釋:
這條語(yǔ)句用于修改當(dāng)前登錄用戶的密碼,如果管理員當(dāng)前是登錄的
root用戶,那么該命令會(huì)修改root用戶的密碼。
(3)使用SET PASSWORD FOR修改指定用戶密碼:
SET PASSWORD FOR 'user_name'@'host_name' = PASSWORD('new_password');
代碼解釋:
這種方式與
ALTER USER類似,用于修改指定用戶的密碼,但是需要注意的是,SET PASSWORD FOR語(yǔ)句與ALTER USER在效果上是一樣的,但它們的語(yǔ)法和實(shí)現(xiàn)有所不同。
——至此,我們就了解了修改密碼的三種方式了,那么現(xiàn)在讓我們使用兩個(gè)案例來(lái)加深一下理解:
例子1:修改 new_user 用戶的密碼
ALTER USER 'new_user'@'%' IDENTIFIED BY 'new_password123';
代碼解釋:
這條命令將
new_user用戶的密碼修改為new_password123,并且立即生效,并且該用戶依然可以從任何主機(jī)進(jìn)行連接。
例子2:修改 root 用戶的密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_root_password';
代碼解釋:
此語(yǔ)句將
root用戶的密碼修改為new_root_password。
這樣我們就大致的了解了在MySQL中如何去修改密碼了!??!
4.刪除用戶
隨著數(shù)據(jù)庫(kù)的使用,就可能會(huì)出現(xiàn)一些不再需要的用戶,在這種情況下,我們就可以通過(guò) DROP USER 語(yǔ)句來(lái)刪除不再需要的用戶及其相關(guān)權(quán)限。
刪除用戶語(yǔ)法:
DROP USER [IF EXISTS] 'user_name'@'host_name';
其中IF EXISTS是一個(gè)可選項(xiàng),表示如果該用戶不存在,系統(tǒng)將不會(huì)拋出錯(cuò)誤。
——同理我們也使用兩個(gè)案例來(lái)進(jìn)一步加深你對(duì)刪除用戶的理解:
例子1:刪除 new_user 用戶
DROP USER 'new_user'@'%';
代碼解釋:
這條語(yǔ)句將會(huì)刪除
new_user用戶,并且不再允許該用戶從任何主機(jī)連接到 MySQL 服務(wù)器。
例子2:刪除 local_user 用戶
DROP USER 'local_user'@'localhost';
代碼解釋:
此語(yǔ)句將刪除
local_user用戶,并且該用戶不再能夠從本地主機(jī)連接到 MySQL 服務(wù)器。
——通過(guò)上述的兩個(gè)案例,我相信讀者對(duì)刪除用戶操作有了自己的理解了,那么刪除完了用戶信息之后,我們?nèi)绾稳ゲ榭磩h除用戶情況呢?
刪除用戶后,我們可以通過(guò)查詢 mysql.user 表來(lái)驗(yàn)證用戶是否已被刪除(如下):
SELECT user, host FROM mysql.user;
至此,我們就學(xué)完了MySQL中的刪除用戶操作了?。?!
5.權(quán)限管理
最后,讓我們學(xué)習(xí)一下權(quán)限管理,在MySQL中,權(quán)限系統(tǒng)非常強(qiáng)大,能夠精確控制每個(gè)用戶能夠執(zhí)行哪些操作,并限制用戶的訪問(wèn)范圍,首先先讓我們了解一下MySQL中內(nèi)置的權(quán)限列表:
SELECT:讀取數(shù)據(jù)。INSERT:插入數(shù)據(jù)。UPDATE:更新數(shù)據(jù)。DELETE:刪除數(shù)據(jù)。ALL PRIVILEGES:所有權(quán)限。
權(quán)限不僅可以針對(duì)數(shù)據(jù)庫(kù)級(jí)別進(jìn)行設(shè)置,也可以針對(duì)特定的表、列甚至是某些存儲(chǔ)過(guò)程進(jìn)行授權(quán)。
在了解完了在MySQL中有哪些內(nèi)置的權(quán)限列表之后,接下來(lái)讓我們學(xué)習(xí)一下如何去授予權(quán)限,在MySQL中,我們可以通過(guò) GRANT 語(yǔ)句,使管理員為用戶授予特定權(quán)限,其基本語(yǔ)法如下:
GRANT priv_type ON priv_level TO 'user_name'@'host_name' [WITH GRANT OPTION];
代碼解釋:
priv_type:指定權(quán)限類型,如SELECT、INSERT等。priv_level:權(quán)限的作用范圍,通常為數(shù)據(jù)庫(kù)、表或列。WITH GRANT OPTION:如果包含此選項(xiàng),表示該用戶可以將獲得的權(quán)限再授予其他用戶。
當(dāng)然這里我們給出兩個(gè)案例來(lái)幫助讀者進(jìn)行理解。
例子1:授予 new_user 用戶對(duì) test_db 數(shù)據(jù)庫(kù)的 SELECT 權(quán)限:
GRANT SELECT ON test_db.* TO 'new_user'@'%';
代碼解釋:
這條語(yǔ)句將授予
new_user用戶對(duì)test_db數(shù)據(jù)庫(kù)中所有表的SELECT權(quán)限,此用戶將能夠查詢?cè)摂?shù)據(jù)庫(kù)的所有表,但不能進(jìn)行修改或刪除操作。
例子2:授予 new_user 用戶對(duì) test_db 數(shù)據(jù)庫(kù)的所有權(quán)限:
GRANT ALL PRIVILEGES ON test_db.* TO 'new_user'@'%';
代碼解釋:
此語(yǔ)句授予
new_user用戶對(duì)test_db數(shù)據(jù)庫(kù)中所有表的所有權(quán)限,包括SELECT、INSERT、UPDATE等,甚至包括修改表結(jié)構(gòu)和刪除數(shù)據(jù)庫(kù)。
通過(guò)上述的兩個(gè)案例的講解之后,讀者應(yīng)該就對(duì)授予權(quán)限操作有了自己的理解了!,那么既然有授予權(quán)限,就會(huì)有回收權(quán)限的操作,那么我們?nèi)绾稳セ厥諜?quán)限呢?
當(dāng)用戶的權(quán)限不再需要時(shí),可以使用 REVOKE 語(yǔ)句撤銷其權(quán)限:
REVOKE priv_type ON priv_level FROM 'user_name'@'host_name';
當(dāng)然,我們也是使用兩個(gè)案例來(lái)幫助讀者進(jìn)一步理解:
例子1:撤銷 new_user 用戶對(duì) test_db 數(shù)據(jù)庫(kù)的 SELECT 權(quán)限
REVOKE SELECT ON test_db.* FROM 'new_user'@'%';
代碼解釋:
此語(yǔ)句撤銷了
new_user用戶在test_db數(shù)據(jù)庫(kù)中的SELECT權(quán)限,用戶將不再能夠執(zhí)行查詢操作。
例子2:撤銷 new_user 用戶對(duì) test_db 數(shù)據(jù)庫(kù)的所有權(quán)限
REVOKE ALL PRIVILEGES ON test_db.* FROM 'new_user'@'%';
代碼解釋:
通過(guò)此命令,
new_user用戶將失去test_db的所有權(quán)限。
至此我們就學(xué)完了權(quán)限管理的所有操作了?。。?/p>
總結(jié)
到此這篇關(guān)于MySQL中的用戶和權(quán)限管理詳解的文章就介紹到這了,更多相關(guān)MySQL用戶和權(quán)限管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows平臺(tái)下MySQL安裝與配置方法與注意事項(xiàng)
這篇文章主要介紹了Windows平臺(tái)下MySQL安裝與配置方法與注意事項(xiàng),需要的朋友可以參考下2017-04-04
查看MySQL中已經(jīng)創(chuàng)建的存儲(chǔ)過(guò)程及其定義
在MySQL中,查看已創(chuàng)建存儲(chǔ)過(guò)程的方法包括使用SHOW CREATE PROCEDURE命令查看存儲(chǔ)過(guò)程定義,查詢INFORMATION_SCHEMA.Routines表或mysql.proc表獲取存儲(chǔ)過(guò)程信息,使用source命令執(zhí)行存儲(chǔ)過(guò)程創(chuàng)建腳本,或查看存儲(chǔ)過(guò)程的文檔注釋,這些方法有助于了解和管理數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程2024-11-11
解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?
在Windows系統(tǒng)上使用Django連接Ubuntu虛擬機(jī)中的MySQL數(shù)據(jù)庫(kù)時(shí),遇到無(wú)法連接的問(wèn)題,排查后發(fā)現(xiàn)是由于MySQL綁定的IP地址改變導(dǎo)致的,下面就來(lái)介紹一下問(wèn)題解決,感興趣的可以了解一下2024-09-09
解決當(dāng)MySQL數(shù)據(jù)庫(kù)遇到Syn Flooding問(wèn)題
Syn攻擊常見于應(yīng)用服務(wù)器,而數(shù)據(jù)庫(kù)服務(wù)器在內(nèi)網(wǎng)中,應(yīng)該很難碰到類似的攻擊,這篇文章主要介紹了當(dāng)MySQL數(shù)據(jù)庫(kù)遇到Syn Flooding問(wèn)題 ,需要的朋友可以參考下2019-06-06
詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換
本文主要介紹了MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

