首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 用戶相關函數辨析:USER() vs CURRENT_USER()

     編輯:MySQL 綜合教學

函數對照表

函數返回值說明
USER()客戶端聲明的用戶@主機連接時指定的用戶名,如 'root'@'localhost'
SYSTEM_USER()同 USER()標準 SQL 別名
SESSION_USER()同 USER()標準 SQL 別名
CURRENT_USER()服務器認證後的實際賬戶權限檢查依據,存儲過程 DEFINER 時返回定義者

核心差異場景

-- 客戶端以 root 連接,但通過 proxy 用戶認證
mysql -u root -p --proxy-user=app_user

SELECT USER();          -- 'root@localhost'
SELECT CURRENT_USER();  -- 'app_user@%'

存儲過程/視圖 DEFINER 行為

CREATE DEFINER = 'admin'@'%' PROCEDURE test_proc()
BEGIN
    SELECT CURRENT_USER();  -- 返回 'admin@%' (SQL SECURITY DEFINER 默認)
END;

實用建議

  • 審計日誌記錄用戶操作:用 USER() 知曉發起連接的賬號
  • 權限判斷、動態 SQL 執行上下文:用 CURRENT_USER()
  • 三個同義詞 USER/SYSTEM_USER/SESSION_USER 任選一致即可
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved