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

1.查看用戶
首先先讓我們學習用戶方面的知識,說到用戶,我們就需要學會如何去查看用戶,在 MySQL 中,所有的用戶信息存儲在 mysql 系統(tǒng)數(shù)據(jù)庫中的 user 表中,我們想要查看當前數(shù)據(jù)庫的所有用戶,可以通過 SELECT 語句從該表中查詢相關(guān)數(shù)據(jù)。
例子:
SELECT user, host FROM mysql.user;
代碼解釋:
這條查詢語句將返回當前 MySQL 系統(tǒng)中所有用戶的名稱和主機信息,字段
user表示用戶名,而字段host表示該用戶允許從哪些主機進行連接。
以上就是在MySQL中查看用戶的操作了?。。?/p>
2.創(chuàng)建用戶
學完了MySQL中查看用戶的操作之后,接下來讓我們學習一下如何在MySQL中創(chuàng)建用戶,在 MySQL 中創(chuàng)建新用戶時,通常使用 CREATE USER 語句,通過該語句,我們可以為新用戶分配名稱、設置密碼并指定哪些主機能夠連接。
創(chuàng)建用戶語法:
CREATE USER [IF NOT EXISTS] 'user_name'@'host_name' IDENTIFIED BY 'auth_string';
代碼解釋:
- user_name:指定新用戶的用戶名。
- host_name:指定該用戶的連接主機范圍,可以是具體的 IP 地址,也可以是通配符
%,表示允許從任何主機連接。- auth_string:為用戶設置的密碼。
- IF NOT EXISTS:為可選,用于避免在創(chuàng)建用戶時出現(xiàn)重復錯誤,如果指定的用戶已經(jīng)存在,系統(tǒng)將不會拋出錯誤。
——了解完了創(chuàng)建用戶的語法之后,現(xiàn)在讓我們使用兩個案例來進一步加深理解:
例子1:創(chuàng)建一個允許從任何主機連接的用戶
CREATE USER 'new_user'@'%' IDENTIFIED BY 'password123';
代碼解釋:
這條語句創(chuàng)建了一個名為
new_user的用戶,密碼是password123,并允許該用戶從任何主機連接到 MySQL 服務器,%表示通配符,允許從任何 IP 地址進行連接。
例子2:創(chuàng)建一個僅允許從本地主機連接的用戶
CREATE USER 'local_user'@'localhost' IDENTIFIED BY 'local_password';
代碼解釋:
這條語句創(chuàng)建了一個名為
local_user的用戶,密碼為local_password,并且該用戶僅能從本地主機(即數(shù)據(jù)庫服務器所在的機器)進行連接,localhost表示只有來自同一機器的連接才會被允許。
——通過上述的兩個案例我們對MySQL中的創(chuàng)建用戶有了更進一步的理解,那么我們在創(chuàng)建完成之后,如何去檢查用戶創(chuàng)建情況呢?
在創(chuàng)建完用戶后,我們可以通過以下查詢語句檢查新用戶是否已經(jīng)成功添加:
SELECT user, host FROM mysql.user;
代碼解釋:
這個查詢將列出所有用戶及其對應的主機信息,幫助我們確認
new_user和local_user是否已正確創(chuàng)建。
以上就是創(chuàng)建用戶的全部內(nèi)容了?。?!
3.修改密碼
我們知道,一個用戶不可能讓任何人都可以使用其身份進行操作,這時我們就要使用到密碼,那么如何去修改密碼呢?以下為修改密碼的三種方式。
(1)使用ALTER USER修改密碼:
ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'new_password';
代碼解釋:
這是推薦的方式,其能夠確保密碼更新后即刻生效,
ALTER USER是 MySQL 5.7 及更高版本支持的命令,適用于修改用戶的認證方式和密碼。
(2)使用SET PASSWORD修改當前用戶密碼:
SET PASSWORD = PASSWORD('new_password');
代碼解釋:
這條語句用于修改當前登錄用戶的密碼,如果管理員當前是登錄的
root用戶,那么該命令會修改root用戶的密碼。
(3)使用SET PASSWORD FOR修改指定用戶密碼:
SET PASSWORD FOR 'user_name'@'host_name' = PASSWORD('new_password');
代碼解釋:
這種方式與
ALTER USER類似,用于修改指定用戶的密碼,但是需要注意的是,SET PASSWORD FOR語句與ALTER USER在效果上是一樣的,但它們的語法和實現(xiàn)有所不同。
——至此,我們就了解了修改密碼的三種方式了,那么現(xiàn)在讓我們使用兩個案例來加深一下理解:
例子1:修改 new_user 用戶的密碼
ALTER USER 'new_user'@'%' IDENTIFIED BY 'new_password123';
代碼解釋:
這條命令將
new_user用戶的密碼修改為new_password123,并且立即生效,并且該用戶依然可以從任何主機進行連接。
例子2:修改 root 用戶的密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_root_password';
代碼解釋:
此語句將
root用戶的密碼修改為new_root_password。
這樣我們就大致的了解了在MySQL中如何去修改密碼了?。。?/p>
4.刪除用戶
隨著數(shù)據(jù)庫的使用,就可能會出現(xiàn)一些不再需要的用戶,在這種情況下,我們就可以通過 DROP USER 語句來刪除不再需要的用戶及其相關(guān)權(quán)限。
刪除用戶語法:
DROP USER [IF EXISTS] 'user_name'@'host_name';
其中IF EXISTS是一個可選項,表示如果該用戶不存在,系統(tǒng)將不會拋出錯誤。
——同理我們也使用兩個案例來進一步加深你對刪除用戶的理解:
例子1:刪除 new_user 用戶
DROP USER 'new_user'@'%';
代碼解釋:
這條語句將會刪除
new_user用戶,并且不再允許該用戶從任何主機連接到 MySQL 服務器。
例子2:刪除 local_user 用戶
DROP USER 'local_user'@'localhost';
代碼解釋:
此語句將刪除
local_user用戶,并且該用戶不再能夠從本地主機連接到 MySQL 服務器。
——通過上述的兩個案例,我相信讀者對刪除用戶操作有了自己的理解了,那么刪除完了用戶信息之后,我們?nèi)绾稳ゲ榭磩h除用戶情況呢?
刪除用戶后,我們可以通過查詢 mysql.user 表來驗證用戶是否已被刪除(如下):
SELECT user, host FROM mysql.user;
至此,我們就學完了MySQL中的刪除用戶操作了?。?!
5.權(quán)限管理
最后,讓我們學習一下權(quán)限管理,在MySQL中,權(quán)限系統(tǒng)非常強大,能夠精確控制每個用戶能夠執(zhí)行哪些操作,并限制用戶的訪問范圍,首先先讓我們了解一下MySQL中內(nèi)置的權(quán)限列表:
SELECT:讀取數(shù)據(jù)。INSERT:插入數(shù)據(jù)。UPDATE:更新數(shù)據(jù)。DELETE:刪除數(shù)據(jù)。ALL PRIVILEGES:所有權(quán)限。
權(quán)限不僅可以針對數(shù)據(jù)庫級別進行設置,也可以針對特定的表、列甚至是某些存儲過程進行授權(quán)。
在了解完了在MySQL中有哪些內(nèi)置的權(quán)限列表之后,接下來讓我們學習一下如何去授予權(quán)限,在MySQL中,我們可以通過 GRANT 語句,使管理員為用戶授予特定權(quán)限,其基本語法如下:
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ù)庫、表或列。WITH GRANT OPTION:如果包含此選項,表示該用戶可以將獲得的權(quán)限再授予其他用戶。
當然這里我們給出兩個案例來幫助讀者進行理解。
例子1:授予 new_user 用戶對 test_db 數(shù)據(jù)庫的 SELECT 權(quán)限:
GRANT SELECT ON test_db.* TO 'new_user'@'%';
代碼解釋:
這條語句將授予
new_user用戶對test_db數(shù)據(jù)庫中所有表的SELECT權(quán)限,此用戶將能夠查詢該數(shù)據(jù)庫的所有表,但不能進行修改或刪除操作。
例子2:授予 new_user 用戶對 test_db 數(shù)據(jù)庫的所有權(quán)限:
GRANT ALL PRIVILEGES ON test_db.* TO 'new_user'@'%';
代碼解釋:
此語句授予
new_user用戶對test_db數(shù)據(jù)庫中所有表的所有權(quán)限,包括SELECT、INSERT、UPDATE等,甚至包括修改表結(jié)構(gòu)和刪除數(shù)據(jù)庫。
通過上述的兩個案例的講解之后,讀者應該就對授予權(quán)限操作有了自己的理解了!,那么既然有授予權(quán)限,就會有回收權(quán)限的操作,那么我們?nèi)绾稳セ厥諜?quán)限呢?
當用戶的權(quán)限不再需要時,可以使用 REVOKE 語句撤銷其權(quán)限:
REVOKE priv_type ON priv_level FROM 'user_name'@'host_name';
當然,我們也是使用兩個案例來幫助讀者進一步理解:
例子1:撤銷 new_user 用戶對 test_db 數(shù)據(jù)庫的 SELECT 權(quán)限
REVOKE SELECT ON test_db.* FROM 'new_user'@'%';
代碼解釋:
此語句撤銷了
new_user用戶在test_db數(shù)據(jù)庫中的SELECT權(quán)限,用戶將不再能夠執(zhí)行查詢操作。
例子2:撤銷 new_user 用戶對 test_db 數(shù)據(jù)庫的所有權(quán)限
REVOKE ALL PRIVILEGES ON test_db.* FROM 'new_user'@'%';
代碼解釋:
通過此命令,
new_user用戶將失去test_db的所有權(quán)限。
至此我們就學完了權(quán)限管理的所有操作了!?。?/p>
總結(jié)
到此這篇關(guān)于MySQL中的用戶和權(quán)限管理詳解的文章就介紹到這了,更多相關(guān)MySQL用戶和權(quán)限管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入了解MySQL中分區(qū)表的原理與企業(yè)級實戰(zhàn)
本文詳細講解什么是分區(qū)表,分區(qū)表增刪改查的工作原理以及分區(qū)表的實戰(zhàn),分區(qū)表的場景有哪些,哪些場景不建議用分區(qū)表,并列舉出六點使用分區(qū)表的誤區(qū),需要的可以參考一下2022-11-11
mysql踩坑之limit與sum函數(shù)混合使用問題詳解
這篇文章主要給大家介紹了關(guān)于mysql踩坑之limit與sum函數(shù)混合使用問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-06-06

