MySQL Workbench中的權限設置不生效
???現(xiàn)象:
這個test賬號我只給了兩個數(shù)據庫權限,為什么它連接還是能看到其他數(shù)據庫。下圖是這個賬號的設置。

test 賬號能看到其他數(shù)據庫,很可能是因為它擁有了某個“全局級別”的權限,比如 SHOW DATABASES。只要用戶有任意一個全局權限,MySQL 就會允許他查看服務器上所有數(shù)據庫的名字,這可能會造成一些安全風險。
?? 為什么一個全局權限會導致看到所有數(shù)據庫?
在 MySQL 中,權限的授予范圍是分層級的。其中,“全局權限”(*.*)是所有權限里最高的一級。根據 MySQL 的官方設計,只要用戶擁有了任何一個全局權限,系統(tǒng)在執(zhí)行 SHOW DATABASES 命令時,就會向其展示服務器上所有數(shù)據庫的名稱。
???♂? 排查問題:test 賬號擁有哪些權限?
按照下面的步驟來檢查 test 賬號的具體權限,應該就能找到是哪個全局權限導致了問題。
登錄數(shù)據庫:用
root或其他有管理權限的賬號登錄 MySQL。mysql -u root -p
查看用戶權限:在 MySQL 命令行中,執(zhí)行以下 SQL 命令:
SHOW GRANTS FOR 'test'@'%';
請注意:賬號由用戶名 (test) 和主機名 (%) 共同組成。

分析返回結果:重點檢查輸出中是否包含
GRANT ... ON \*.\* TO ...這樣的語句。這類語句就代表了全局權限。
?? 解決方案:如何限制用戶只能看到授權的數(shù)據庫?
想解決這個問題,核心思路就是移除用戶多余的全局權限。
1. 方案一:移除SHOW DATABASES權限(推薦)
如果你只希望用戶看不到其他數(shù)據庫,但無需回收他的其他權限,可以只撤銷 SHOW DATABASES 權限。在命令行中執(zhí)行:
REVOKE SHOW DATABASES ON *.* FROM 'test'@'%';
2. 方案二:檢查并回收不必要的全局權限
你也可以選擇移除所有不必要的全局權限,僅保留數(shù)據庫級別的授權。操作前請先查詢并評估,再執(zhí)行撤銷:
-- 1. 查詢當前權限以評估 SHOW GRANTS FOR 'test'@'%'; -- 2. 移除不必要的全局權限,例如: REVOKE SELECT ON *.* FROM 'test'@'%';
3. 驗證結果
執(zhí)行權限回收后,可以讓 test 重新登錄并運行 SHOW DATABASES; 命令,檢查數(shù)據庫列表是否已符合預期。
?? 核心總結
理解權限層級是關鍵,MySQL 的這種設計是為了兼顧安全性與可用性:
- 安全性優(yōu)先:默認行為是“最小權限原則”,即用戶只能看到自己有權限訪問的數(shù)據。這有效防止了低權限用戶通過
SHOW DATABASES來探測服務器上的所有數(shù)據庫名稱,降低了信息泄露的風險。 - 全局權限的雙刃劍:作為最高層級的權限,全局權限能極大地方便管理員操作,但也會產生“看到所有數(shù)據庫”的副作用。因此,在給普通業(yè)務賬號授予任何全局權限時,都需格外謹慎。
到此這篇關于MySQL Workbench中的權限設置不生效的文章就介紹到這了,更多相關MySQL Workbench權限不生效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA 鏈接Mysql數(shù)據庫并執(zhí)行查詢操作的完整代碼
這篇文章主要介紹了IDEA 鏈接Mysql數(shù)據庫并執(zhí)行查詢操作的完整代碼,代碼不難,詳細大家看完本文肯定有意向不到的收獲,感興趣的朋友跟隨小編一起看看吧2021-05-05
mysql利用init-connect增加訪問審計功能的實現(xiàn)
下面小編就為大家?guī)硪黄猰ysql利用init-connect增加訪問審計功能的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
SQLyog錯誤號碼MySQL?plugin?caching_sha2_password?could?not?
這篇文章主要介紹了SQLyog錯誤號碼?plugin?caching_sha2_password?could?not?be?loaded的解決方法,需要的朋友可以參考下2023-06-06

