MySQLストアドプロシジャ等から任意のデータをファイルに出力しようとして、
次のエラーが発生、
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
出力先のファイルシステムのパーミッションをチェックしても問題がない。
SELECT host, user FROM mysql.user ;
を見ても、問題ない。
一番怪しい、
show GRANTS FOR 'user'@'%';
の結果を見ても以下のような結果で、
+---------------------------------------------------------------------------------------------------------+
| Grants for user@% |
+---------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD '70r5113226y937a' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------+
全てのアクセス権があるように見える。
SELECT INTO OUTFILE の権限は、FILE という権限名で
grant file ON *.* TO 'user'@'%'
を実行して、
flush privileges
を実行すれば、ファイル出力できるようになる。
注意が必要なのは、flush privilegesを実行後、MySQLをログアウトして
別のコネクションにしないと、
新しい privileges にならず、grant file ON *.* TO を実行したのに、なぜできない!などと、
無駄な時間を費やしてしまう。