Mysql

mysqldump 可以寫入 /tmp 和 /var/tmp 但不能寫入其他地方

  • March 11, 2022

我在不同的伺服器和不同的版本上有各種 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.

然而,解決方案是將文件儲存到/tmpand/var/tmp目錄結構之外的目錄中。決定輸出不應該對非mysql帳戶可見的權力,因此通過將其放入.hash目錄中來解決它/var/tmp

我將輸出目錄更改為/opt/mysqlbackup,從那以後就沒有問題了。

$$ Lots of $$其他事情可能會妨礙。 SELinux 會導致各種各樣的問題,讓非常基本的事情毫無意義地失敗

$$ or announced $$原因。 文件系統中的 ACL 可能會導致混亂,在您沒有意識到的情況下偷偷地“調整”權限。

MySQL配置是否可能不同?

這些天來,一個全新的 MySQL 安裝很可能伴隨著–secure-file-priv開啟。如果這與您嘗試放置文件的位置不匹配,您將遇到另一面牆。

問候,菲爾 W.

引用自:https://dba.stackexchange.com/questions/244929