目的
ローカルで使用しているDBのバックアップをcsv形式で保存したい
実行環境
- OS:Windows 10 pro (version 1809)
- MySQL: version 5.7.19
発生している問題・エラーメッセージ
INTO OUTFILE
であるテーブルをそのままcsvファイルとしてエクスポートしようとすると
以下のエラーが出力されます。
sql
1C:\Users\username>mysql -u root -p 2Enter password: ******** 3 4(中略) 5 6mysql> use sakila 7Database changed 8mysql> SELECT * 9 -> FROM actor 10 -> INTO OUTFILE "C://Users/username/Desktop/test/test.csv" 11 -> FIELDS 12 -> TERMINATED BY ',' 13 -> ENCLOSED BY '"' 14 -> ; 15ERROR 1 (HY000): Can't create/write to file 'C:\Users\username\Desktop\test\test.csv' (Errcode: 13 - Permission denied)
なお、ユーザ名は仮の名前、エクスポートするデータベースはMySQLサンプルデータ(sakila)を使用しております。
不要かと思われますが、出力するテーブル内容を以下に記載しておきます。
sql
1mysql> SELECT * FROM actor ; 2+----------+-------------+--------------+---------------------+ 3| actor_id | first_name | last_name | last_update | 4+----------+-------------+--------------+---------------------+ 5| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 | 6| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 | 7| 3 | ED | CHASE | 2006-02-15 04:34:33 | 8| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 | 9 10(中略) 11 12| 200 | THORA | TEMPLE | 2006-02-15 04:34:33 | 13+----------+-------------+--------------+---------------------+
試したこと
- アクセス権の確認
Permisson denied
とあるので、ディレクトリへのアクセス権限が無いのだろうと思い
アクセス権を確認しました。
> cd C:\Users\username\Desktop > ls -l drwxr-xr-x 1 username users 0 9月 25 08:50 test (以下略)
以上の通り、対象ディレクトリへの書き込み権限は付与されているようです。
親ディレクトリに対しても同様に確認しましたが、すべて同じアクセス権でした。
- MySQL:rootユーザの権限確認
今回出力時に使用するrootユーザのサーバ内権限を確認しました。
sql
1mysql> SHOW GRANTS for root@localhost ; 2+---------------------------------------------------------------------+ 3| Grants for root@localhost | 4+---------------------------------------------------------------------+ 5| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | 6| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION | 7+---------------------------------------------------------------------+
公式リファレンスによると、ALL PRIVILEGES
は「すべてのグローバル権限またはテーブルレベルのすべての権限が付与されます」との記述があります。
すべての権限が付与されているならば、当然ファイル書き込みも可能であると思うのですが。
- my.iniの設定値変更
また、この記事を参考にし、
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
にてsecure-file-priv=""
と設定、MySQLの再起動を行いました。
よって、ファイル出力できるディレクトリに制限は無いと考えているのですが...
エラー内容などで調べましたが未だ解決策がわかりません。
アドバイス、または同じ状況でのトラブルシュートの記事などに心当たりがありましたらご教授願えると幸いです。