CentOS 7のファイルにmysql出力を書き込む

CentOS 7のファイルにmysql出力を書き込む

CentOS端末のmysqlコマンドラインクライアント内で次のコマンドを実行しようとしています。

SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')  
FROM INFORMATION_SCHEMA.TABLES where  table_schema in ('justatest')  
INTO OUTFILE '/home/user/tmp/truncate.sql';

結果は次のとおりです。

ERROR 1 (HY000): Can't create/write to file '/home/user/tmp/truncate.sql' 
(Errcode: 13 - Permission denied)

次に、新しい端末を開き、を入力し、su -パスワードを入力してから、次のコマンドを入力しました。

chown root:root /home/user/tmp
chmod 1777 /home/user/tmp

しかし、上記の生のSQLコードを実行すると、まだ同じエラーが発生します。

編集する:

試しても同じエラーが発生します。

chown username:username /home/user/tmp
chmod 1777 /home/user/tmp

試行すると、同じエラーメッセージが表示されます。

chown mysql:mysql /home/user/tmp
chmod 1777 /home/user/tmp

このエラーをどのように解決できますか?

ベストアンサー1

欲しいものを達成するためのもう一つの方法です。

mysqlパスなしで必要なファイル名のみを実行してコマンドを実行します。

SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES where  table_schema in ('justatest')  
INTO OUTFILE 'truncate.sql';

これにより、ファイルがデフォルトのmysqlディレクトリ(/var/lib/mysql/database)に保存されます。

その後、ファイルを移動して所有者を変更できます。

$ sudo mv /var/lib/mysql/database/truncate.sql /home/user/tmp
$ sudo chown user:user /home/user/tmp/truncate.sql

おすすめ記事