MySQL徹底禁止用戶(hù)執(zhí)行KILL的解決方法
在 MySQL 中,即使用戶(hù)只有 SELECT 權(quán)限,仍然可以執(zhí)行 SHOW PROCESSLIST 和 KILL 命令。原因如下:
1. SHOW PROCESSLIST 不需要特殊權(quán)限
- 默認(rèn)情況下,任何用戶(hù)都可以執(zhí)行
SHOW PROCESSLIST,即使只有USAGE權(quán)限(最低權(quán)限)。 - 但如果 MySQL 啟用了
--skip-show-database啟動(dòng)選項(xiàng),普通用戶(hù)可能看不到不屬于自己的進(jìn)程。
2. KILL 命令的權(quán)限依賴(lài)
KILL命令的執(zhí)行權(quán)限取決于PROCESS或SUPER權(quán)限:- 如果用戶(hù)有
PROCESS權(quán)限,可以KILL自己的會(huì)話(huà)(即自己建立的連接)。 - 如果用戶(hù)有
SUPER權(quán)限,可以KILL任意會(huì)話(huà)(包括其他用戶(hù)的會(huì)話(huà))。
- 如果用戶(hù)有
- 即使只授予
SELECT權(quán)限,某些情況下用戶(hù)仍然可以KILL自己的會(huì)話(huà):- 在 MySQL 5.7+,如果用戶(hù)有
CONNECTION_ADMIN(或SUPER權(quán)限的替代),可能仍然可以KILL會(huì)話(huà)。 - 在 MySQL 8.0+,引入了更細(xì)粒度的權(quán)限控制,但默認(rèn)情況下,某些操作仍然可能允許
KILL。
- 在 MySQL 5.7+,如果用戶(hù)有
3. 為什么 SELECT 權(quán)限的用戶(hù)可以 KILL?
- 可能的原因:
- 用戶(hù)隱式擁有
PROCESS權(quán)限(檢查mysql.user表確認(rèn))。 - MySQL 的版本差異(某些版本默認(rèn)允許
KILL自己的會(huì)話(huà))。 - 用戶(hù)屬于某個(gè)角色(MySQL 8.0+),該角色可能授予了
PROCESS或KILL權(quán)限。
- 用戶(hù)隱式擁有
如何徹底禁止用戶(hù)執(zhí)行 KILL?
方法 1:明確撤銷(xiāo) PROCESS 和 SUPER 權(quán)限
REVOKE PROCESS, SUPER ON *.* FROM 'query'@'%'; FLUSH PRIVILEGES;
- 這樣用戶(hù)只能
SHOW PROCESSLIST,但無(wú)法KILL任何會(huì)話(huà)(包括自己的)。
方法 2:限制 SHOW PROCESSLIST(可選)
如果希望用戶(hù)完全看不到進(jìn)程列表:
REVOKE PROCESS ON *.* FROM 'query'@'%'; FLUSH PRIVILEGES;
- 這樣
SHOW PROCESSLIST僅顯示用戶(hù)自己的會(huì)話(huà)(而不是所有會(huì)話(huà))。
方法 3:使用 MySQL 8.0+ 的細(xì)粒度權(quán)限
在 MySQL 8.0+,可以更精確控制:
-- 禁止 KILL 其他會(huì)話(huà) REVOKE SYSTEM_USER, SYSTEM_VARIABLES_ADMIN, SESSION_VARIABLES_ADMIN ON *.* FROM 'query'@'%'; -- 確保沒(méi)有 PROCESS 權(quán)限 REVOKE PROCESS ON *.* FROM 'query'@'%'; FLUSH PRIVILEGES;
驗(yàn)證用戶(hù)的權(quán)限
-- 查看用戶(hù)權(quán)限 SHOW GRANTS FOR 'query'@'%'; -- 檢查 PROCESS 權(quán)限 SELECT * FROM mysql.user WHERE user='query'\G
- 如果
Process_priv = 'Y',說(shuō)明用戶(hù)有PROCESS權(quán)限,可以KILL自己的會(huì)話(huà)。
總結(jié)
SELECT權(quán)限本身不會(huì)允許KILL,但PROCESS權(quán)限會(huì)。- 要禁止
KILL,必須明確撤銷(xiāo)PROCESS和SUPER權(quán)限。 - MySQL 8.0+ 提供了更細(xì)粒度的權(quán)限控制,可以更嚴(yán)格限制
KILL操作。
如果你的 query 用戶(hù)仍然可以 KILL,請(qǐng)檢查其完整權(quán)限(可能有隱藏的 PROCESS 或角色權(quán)限)。
以上就是MySQL徹底禁止用戶(hù)執(zhí)行KILL的解決方法的詳細(xì)內(nèi)容,更多關(guān)于MySQL禁止用戶(hù)執(zhí)行KILL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL查詢(xún)性能優(yōu)化的7個(gè)常見(jiàn)查詢(xún)錯(cuò)誤及解決方案
數(shù)據(jù)庫(kù)性能是Web應(yīng)用和大型軟件系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵,即使是精心設(shè)計(jì)的應(yīng)用,如果數(shù)據(jù)庫(kù)查詢(xún)效率低下,也會(huì)導(dǎo)致用戶(hù)體驗(yàn)下降、系統(tǒng)資源浪費(fèi),甚至系統(tǒng)崩潰,本文將深入探討MySQL查詢(xún)優(yōu)化,分析常見(jiàn)的查詢(xún)錯(cuò)誤,并提供提升數(shù)據(jù)庫(kù)性能的實(shí)用技巧,需要的朋友可以參考下2025-04-04
關(guān)于MySQL的存儲(chǔ)函數(shù)(自定義函數(shù))的定義和使用方法詳解
本文主要講解了關(guān)于MySQL的存儲(chǔ)函數(shù)(自定義函數(shù))的定義和使用方法詳解與存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程的區(qū)別2018-03-03
通過(guò)sysbench工具實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的性能測(cè)試的方法
sysbench是一款壓力測(cè)試工具,可以測(cè)試系統(tǒng)的硬件性能,也可以用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行基準(zhǔn)測(cè)試。這篇文章主要介紹了通過(guò)sysbench工具實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的性能測(cè)試 ,需要的朋友可以參考下2019-07-07
MYSQL加密和壓縮函數(shù)詳解以及實(shí)戰(zhàn)(附示例)
這篇文章主要給大家介紹了關(guān)于MYSQL加密和壓縮函數(shù)詳解以及實(shí)戰(zhàn)的相關(guān)資料,加密函數(shù)主要用來(lái)對(duì)數(shù)據(jù)進(jìn)行加密和界面處理,以保證某些重要數(shù)據(jù)不被別人獲取,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
MySQL錯(cuò)誤提示:sql_mode=only_full_group_by完美解決方案
有時(shí)候遇到數(shù)據(jù)庫(kù)重復(fù)數(shù)據(jù),需要將數(shù)據(jù)進(jìn)行分組,并取出其中一條來(lái)展示,這時(shí)就需要用到group by語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于MySQL錯(cuò)誤提示:sql_mode=only_full_group_by的完美解決方案,需要的朋友可以參考下2022-10-10
CentOS7下二進(jìn)制安裝mysql 5.7.23
這篇文章主要為大家詳細(xì)介紹了CentOS7下二進(jìn)制安裝mysql 5.7.23,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
為什么MySQL數(shù)據(jù)庫(kù)索引選擇使用B+樹(shù)?
今天小編就為大家分享一篇關(guān)于為什么MySQL數(shù)據(jù)庫(kù)索引選擇使用B+樹(shù)?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
MySQL連表查詢(xún)從基礎(chǔ)到實(shí)戰(zhàn)案例
本文介紹了MySQL連表查詢(xún)的各種類(lèi)型,包括內(nèi)連接、左外連接、右外連接、全外連接、交叉連接和自連接,文章還討論了多表連接的性能優(yōu)化技巧,通過(guò)實(shí)戰(zhàn)案例和常見(jiàn)誤區(qū)的分析,幫助讀者更好地理解和應(yīng)用連表查詢(xún),感興趣的朋友跟隨小編一起看看吧2026-01-01

