首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 用戶匹配優先級規則:具體 Host 優先、具體 User 優先、啟動時排序機制

     編輯:MySQL 資料庫相關知識

問題場景


-- 兩個帳號
'thomas.loc.gov', 'fred'   -- 具體主機
'%', 'fred'                -- 萬用字元主機
-- 從 thomas.loc.gov 連線,兩者都匹配,用哪個?

匹配優先級演算法

  1. 啟動時讀取 mysql.user 並**排序**。
  2. 連線嘗試時,**按排序順序掃描,首個匹配生效**。
  3. 排序規則:
    1. Host 越具體越優先:具體主機名/IP > %(萬用字元)。
    2. Host 相同時,**User 越具體越優先**:具體用戶名 > 空用戶名(萬用字元)。

排序示例

排序前排序後
%       root
%       jeffrey
localhost root
localhost
localhost root
localhost
%       jeffrey
%       root

實務啟示

  • 明確指定用戶名不一定被匹配:若有 '%','root' 和 'localhost','',從 localhost 連 root 會匹配第二個(空用戶名更具體?實際上 user 空值最不具體,但 host localhost 比 % 具體,所以 localhost 行優先;同 host 下 user root 比空具體,所以 root 優先)。
  • 避免建立模糊重疊帳號,採用「最小權限、明確 Host/User」原則。
  • 新增帳號後 FLUSH PRIVILEGES 重新排序生效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved