secure-file-priv
を設定する場所が見つかりません。私はこのメッセージを受け取ります:
1290-MySQLサーバーは--secure-file-privオプションで実行されているため、このステートメントを実行できません
このステートメントを実行すると:
SELECT COLUMN_NAME, data_type FROM tabledefs INTO OUTFILE 'xpeter'
OUTFILE 'xpeter'
を削除すると機能します。 OUTFILE '/tmp/xpeter
も機能しません。
--secure-file-priv="/tmp"
を追加しようとしましたが、変更はありません。変数はNULLのままです:
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="/tmp" $other_args >/dev/null &
/usr/local/mysql/bin/mysqld --verbose --help | grep secure-file
--secure-file-priv=name
secure-file-priv NULL
my.cnf
ファイルがありません。ファイルシステム全体を実行し、*.cnf
ファイルを探します。 ./mysql-5.7.17-macos10.12-x86_64/data/auto.cnf
および./mysql-5.7.17-macos10.12-x86_64/support-files/my-default.cnf
以外は見つかりませんでした。行$bindir/mysqld...
はsupport-files/my-default.cnf
にあります。
OUTFILE 'xpeter'
なしでクエリを再実行します。クエリはOKです。Apache2 log
以外のメッセージはログファイルにありません。それから私は走ります
SELECT COLUMN_NAME, data_type INTO OUTFILE 'xpeter' FROM tabledefs
ログファイルにエラーはなく、phpmyadmin(クエリステートメントを実行する場所、rootとしてログイン)でのみ:以前と同じメッセージ。
私はetc/my.cnf
も試しました:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProgramArguments</key>
<array>
<string>--secure-file-priv=/mysql_exp</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>
どちらの場合も、再起動後もファイルを書き込むことができませんでした。
フォルダーの所有者は変更しませんでした。デーモンに--secure-file-priv=/mysql_exp
を追加して再起動すると、MySQLがまったく動作しません。
mysqlのMac OS X起動パラメーターで.plistファイルを編集して変更できます
ロケーション:
/Library/LaunchDaemons
com.Oracle.oss.mysql.mysqld.plist
XcodeまたはBBEditなどを使用して、ProgramArgumentsセクションに行を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>ExitTimeOut</key>
<integer>600</integer>
<key>GroupName</key>
<string>_mysql</string>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.Oracle.oss.mysql.mysqld</string>
<key>LaunchOnlyOnce</key>
<false/>
<key>ProcessType</key>
<string>Interactive</string>
<key>Program</key>
<string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--secure-file-priv=/mysql_exp</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>SessionCreate</key>
<true/>
<key>UserName</key>
<string>_mysql</string>
<key>WorkingDirectory</key>
<string>/usr/local/mysql</string>
</dict>
</plist>
mySQLを再起動して確認します。
mysql> show variables like 'secure%';
+------------------+-------------+
| Variable_name | Value |
+------------------+-------------+
| secure_auth | ON |
| secure_file_priv | /mysql_exp/ |
+------------------+-------------+
2 rows in set (0.00 sec)
追加:
/ etc /にmy.cnfファイルを直接作成すると、同じ結果を得ることができます
Sudo nano /etc/my.cnf
からサンプルファイルをコピーできます
/usr/local/mysql/support-files/
コメントについてのメモ-「コピー/貼り付け」これはMacでも方法ではありません。次のような通常のツールを使用するだけで、ファイルのインポート/エクスポートはまったく必要ありません。
それらのいずれかがあなたを助けることができます:
手動のファイルレベルのインポート/エクスポートは、プロセスを自動化する必要がある実稼働環境で役立つ可能性がありますが、今のところ、より多くのバックアップ方法であり、プライマリで適切なETLスクリプトとツールです。
新しいファイル/etc/my.cnfを作成し、次の行を追加します
[mysqld_safe]
[mysqld]
secure_file_priv="/Users/abc/"
そして再起動