Uma resposta rápida, que não requer que você edite nenhum arquivo de configuração (e funciona em outros sistemas operacionais, além do Windows), é apenas encontrar o diretório que você tem permissão para salvar usando:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
E, em seguida, certifique-se de usar esse diretório em seu
SELECT
INTO OUTFILE
da instrução cláusula:SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Resposta original
Eu tive o mesmo problema desde a atualização do MySQL 5.6.25 para 5.6.26.
No meu caso (no Windows), olhar para o serviço MySQL56 Windows me mostra que o arquivo de opções/configurações que está sendo usado quando o serviço é iniciado é
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
No linux os dois locais mais comuns são /etc/my.cnf
ou /etc/mysql/my.cnf
.
Abrindo este arquivo, posso ver que o secure-file-priv
opção foi adicionada sob o [mysqld]
group nesta nova versão do MySQL Server com um valor padrão:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Você pode comentar isso (se estiver em um ambiente de não produção) ou experimentar alterar a configuração (recentemente, tive que definir secure-file-priv =""
para desabilitar o padrão). Não se esqueça de reiniciar o serviço depois de fazer as alterações.
Como alternativa, você pode tentar salvar sua saída na pasta permitida (o local pode variar dependendo da sua instalação):
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
É mais comum ter valores separados por vírgulas usando FIELDS TERMINATED BY ','
. Veja abaixo um exemplo (mostrando também um caminho do Linux):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';