mysqldump 可以寫入 /tmp 和 /var/tmp 但不能寫入其他地方
我在不同的伺服器和不同的版本上有各種 MySQL 數據庫。
mysqldump
除了這個新的 Red Hat 7.6 伺服器之外,我在 Linux 版本中使用相同的命令沒有問題。命令:
mysqldump --tab=/var/tmp/mysql/mysql.20190808/wikidb \ --opt --user=root --password=[password] wikidb
在 mysqldump 命令之前:
mkdir -p /var/tmp/mysql/mysql.20190808/wikidb chown -R mysql:mysql /var/tmp/mysql/mysql.20190808 chmod 777 /var/tmp/mysql/mysql.20190808
這都是腳本,所以沒有錯字的機會。
在所有較舊的伺服器上,尤其是該伺服器正在替換的較舊的 wiki 伺服器上,該命令可以成功執行。我得到目錄中
.txt
數據庫的所有表和文件的列表。在新伺服器上,我得到第一個表,
back_archive.sql
然後出現錯誤:mysqldump:出現錯誤:1:執行“SELECT INTO OUTFILE”時“無法創建/寫入文件’/var/tmp/mysql/mysql.20190808/wikidb/back_archive.txt’(錯誤程式碼:2)”
我已經嘗試了各種權限,包括 1777 給它一個粘性位,以防萬一,但它仍然失敗。所有權確認為
mysql:mysql
,數據庫所有者為mysql
。我已經對手冊頁進行了大量搜尋和閱讀,每個人都將其歸咎於所有權或目錄權限,但如上所述,我相信我做對了,特別是因為它是一個腳本並且正在處理每個其他伺服器。
我會注意到這是我的第一個主/主複製伺服器。我沒有找到任何關於這種配置的具體資訊,但我想我會提到它。
我發現最初的問題是 txt 文件儲存在
/var/tmp
.然而,解決方案是將文件儲存到
/tmp
and/var/tmp
目錄結構之外的目錄中。決定輸出不應該對非mysql帳戶可見的權力,因此通過將其放入.hash目錄中來解決它/var/tmp
。我將輸出目錄更改為
/opt/mysqlbackup
,從那以後就沒有問題了。
$$ Lots of $$其他事情可能會妨礙。 SELinux 會導致各種各樣的問題,讓非常基本的事情毫無意義地失敗
$$ or announced $$原因。 文件系統中的 ACL 可能會導致混亂,在您沒有意識到的情況下偷偷地“調整”權限。
MySQL配置是否可能不同?
這些天來,一個全新的 MySQL 安裝很可能伴隨著–secure-file-priv開啟。如果這與您嘗試放置文件的位置不匹配,您將遇到另一面牆。
問候,菲爾 W.