1. 程式人生 > >WINDOWS MYSQL匯出檔案時,報錯,錯誤碼1290

WINDOWS MYSQL匯出檔案時,報錯,錯誤碼1290

MYSQL5.7以上的版本

用insert * from table_name  into outfile 'dir'時,提示圖書錯誤

此時先通過這個命令檢視一下  

show VARIABLES like '%secure%'

如果secure_file_priv是NULL

則出現錯誤的原因是因為MYSQL5.7增加了新許可權,secure_file_priv預設為NULL,限制了資料的匯入匯出。

此時我們可以先停止MYSQL,net stop mysql;

然後在命令列下用  mysqld --secure-file-priv=dir_name;

//dir_name,可以是一個具體的目錄,比如D:/,此時匯入匯出操作可以再D盤及其目錄下

行(如果需要儲存在名字為漢字的資料夾中,則需要自己設定字符集,不然找不到目錄)(如果要儲存的檔名字為漢字,也要設定字符集,不然儲存的檔名字為亂碼)

//也可以是空(不是NULL),空是什麼都不加,此時,所有的地方都可以進行(如果用到漢字,操作同上面括號)

//匯入導出操作

此時,該命令視窗卡住,可以再開啟另一個命令視窗,啟用mysql ,net start mysql;啟用時可能會提示啟動失敗,這個不用擔心,已經可以使用了,此時已經可以登入使用了。只不過開啟或者關閉服務都提示失敗。等下次重啟就正常了。

上一下MYSQL 操作手冊的說明:已經翻譯成了中文版(原網址為:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_secure_file_priv)

命令列格式 --secure-file-priv=dir_name
變數作用域 全球
動態變數 沒有
允許的值(< = 5.6.33) 型別 字串
預設的 empty
有效值 empty
dirname
允許的值(> = 5.6.34) 型別 字串
預設的 platform specific
有效值 empty
dirname
NULL
  • 如果空,變數沒有影響。這不是一個安全的設定。

  • 如果設定一個目錄的名稱,伺服器限制進出口業務工作只有該目錄中的檔案。該目錄必須存在;伺服器將不建立它。

  • 如果設定為 NULL

    ,伺服器禁用進出口操作。MySQL 5.6.34這個值是允許的。

在MySQL 5.6.34之前,這個變數預設是空的。5.6.34,預設值是特定於平臺和依賴的價值 INSTALL_LAYOUT CMake選項,如下表所示。指定預設的secure_file_priv值顯式地從源,如果您正在構建使用 INSTALL_SECURE_FILE_PRIVDIR CMake選擇。

INSTALL_LAYOUT價值 預設的 secure_file_priv價值
STANDALONE, WIN NULL
DEB, RPM, SLES, SVR4 /var/lib/mysql-files

MySQL 5.6.34,伺服器檢查的價值 secure_file_priv在啟動和寫一個警告的錯誤日誌,如果值是不安全的。一個非NULL值被認為是不安全的,如果它是空的,或值是資料目錄或子目錄,或一個目錄,所有使用者都可以訪問。如果 secure_file_priv被設定為一個不存在的路徑時,伺服器將一個錯誤訊息寫入錯誤日誌並退出。