我嘗試使用SELECT INTO OUTFILE
並使用/tmp
以外的目錄。SELECT INTO OUTFILE權限被拒絕,但用戶可以寫入目錄
我的Linux用戶名爲datam
,我的MySQL用戶是lea
,MySQL運行的是mysql
。
當datam
運行mysql -u lea database
,並嘗試做SELECT INTO OUTFILE
與/home/datam/xfers/online/file.csv
的路徑,我得到一個錯誤代碼爲13,權限被拒絕。使用/tmp/file.csv
工程,所以我相當有信心它不是MySQL中的權限問題。
我已經添加mysql
到datam
組,並與驗證了這一點:
~$ sudo id mysql
uid=106(mysql) gid=114(mysql) groups=114(mysql),1001(datam)
我/home/datam/
設定爲775遞歸。
如果我做sudo -u mysql /bin/bash
並且去/home/datam/xfers/online/
並且做touch file
它寫一個文件。
我需要做些什麼來允許mysql
從SELECT INTO OUTFILE
寫入文件?
我相信這不是圍繞這個主題的其他問題的重複,因爲我已經看過他們,並遵循他們的所有指令(在所有目錄中設置執行,導致我想要的,設置GRANT FILE ON,等等)。
MySQL用戶lea
補助:
+-----------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+-----------------------------------------------------------------------------------------------------------+
| GRANT FILE ON *.* TO 'lea'@'localhost' IDENTIFIED BY PASSWORD '*9BB439A3A652A9DAD3718215F77A7AA06108A267' |
| GRANT ALL PRIVILEGES ON `database`.* TO 'lea'@'localhost' |
+-----------------------------------------------------------------------------------------------------------+
用戶確實有該文件的權限,但。正如我的問題所述:'使用/ tmp /文件。csv的作品,所以我相當有信心這不是一個MySQL的權限問題' – tubaguy50035
你試過嗎? 「由INTO OUTFILE或INTO DUMPFILE創建的任何文件都可由服務器主機上的所有用戶寫入,其原因是MySQL服務器無法創建一個文件,該文件由正在運行其帳戶的用戶以外的任何人所擁有。由於這個原因和其他原因,您不應該以root身份運行mysqld。)因此,該文件必須是世界可寫的,以便您可以操作它的內容。「 –
讓一個擁有文件權限的mysql用戶不同於嘗試使用'mysql'操作系統帳戶寫入文件 –