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

MySQL 導出權限錯誤「Access denied」排查:缺失 FILE 權限的隱形陷阱

     編輯:MySQL 綜合教學

現象

普通用戶執行 SELECT * INTO OUTFILE 'path' FROM tbl 報錯:

ERROR 1045 (28000): Access denied for user 'my_user'@'%' (using password: YES)

已授權 GRANT ALL ON my_db.* TO 'my_user'@'%' 但無效。

根因分析

  • INTO OUTFILE 需要 全局 FILE 權限,不屬於庫級權限體系。
  • GRANT ALL ON db.* 僅覆蓋該庫的對象權限,**不包含 FILE**。
  • FILE 權限只能授予 *.*(全局)。

解決方案

SHOW GRANTS FOR 'my_user'@'%';
-- 應包含:GRANT FILE ON *.* TO 'my_user'@'%'

補充:安全導出最佳實踐

方法需權限適用場景備註
SELECT INTO OUTFILEFILE服務器本地導出文件生成在服務器,需服務器寫權限
mysqldumpSELECT, LOCK TABLES, SHOW VIEW 等邏輯備份、跨機器遷移客戶端執行,無需服務器 FILE 權限
mysql -e "SQL" > fileSELECT簡單查詢導出文本/CSV客戶端重定向,最通用
Workbench/Navicat 導出SELECT圖形化導出 Excel/CSV/JSON工具內部用 SELECT + 客戶端寫文件

避坑提示

  • 不要濫授 FILE:FILE 權限允許讀寫服務器任意可訪問文件,存在安全風險,僅授信任賬號。
  • secure_file_priv 限制:MySQL 5.6+ 默認限制導出目錄,查看 SHOW VARIABLES LIKE 'secure_file_priv',文件路徑必須在該目錄下。
  • CSV 導出範例:
      
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved