2013-01-19 25 views
5

我想了解使用INTO OUTFILE命令時遇到問題的原因。錯誤代碼13,選擇進入OUTFILE問題

我總是得到這樣erroro:

ERROR 1 (HY000): Can't create/write to file '/var/www/p1.txt' (Errcode: 13) 


SELECT password FROM mysql.user WHERE user='root' INTO OUTFILE '/var/www/p1.txt'; 

有用的細節:

  • Web應用程序:DVWA(本地主機)(用於研究目的)

  • 服務器:Apache/2.2。 14(Ubuntu) - PHP/5.3.2

  • MySQL version 5.1.63

  • 操作系統Linux Backtrack 5r3。

我以根用戶身份運行該命令。此外,我可以自由創建文件夾或文件在/ var/www/

錯誤代碼13我知道這意味着權限被拒絕,但我應該怎麼做才能解決問題?

任何幫助將不勝感激。

+0

「p1.txt」是否已經存在(它不應該)? mysqld進程是否有權寫入'/ var/www'目錄? – eggyal

回答

4

CHOWN在/ var/WWW用戶試圖寫入文件,或CHMOD 777 /無功/網絡

這可能不是這樣做的安全方式,你可能想考慮將文件的其他

+0

它工作正常...我知道,出於安全原因,我不應該這樣做..但我只想測試一個MySQL數據泄露的例子..感謝很多.. – user1990170

+0

不工作! :@ – Hasan

7

即使您以root身份登錄到MySQL,文件寫入也將以運行實際MySQL守護程序的用戶身份執行。

換句話說,您應該檢查哪個用戶運行mysqld,併爲該用戶的目錄提供寫入權限。

+0

非常直觀,但這比任何地方盲目設置777都好得多。謝謝! – miken32

5

您必須更改用戶mysqld的權限。首先運行以下命令sudo aa-status來檢查您的用戶狀態和授權目錄。如果您想更改權限,請編輯/etc/apparmor.d/usr.sbin.mysqld並插入您想要的目錄。

則必須重新啓動AppArmor的sudo /etc/init.d/apparmor restart

+1

這是合法的。感謝發佈!對於不耐煩的人和/或想要執行快速命令的人,例如'mysqldump -T','service apparmor teardown'會關閉它。完成後,您可以「啓動apparmor」並恢復正常生活。 –

0

在CentOS SELinux的東西是打不-不錯。

$ getenforce 
Enforcing 

$ setenforce 0 
Permissive 

現在這是粗糙的,但爲我工作(直到重新啓動,然後它切換回來)。 如果這個臨時措施有效,您需要google瞭解如何正確配置selinux。

+0

謝謝,這也是我的問題的原因! –