the - mysql-- secure file priv error
Código de error: 1290. El servidor MySQL se está ejecutando con la opción--secure-file-priv por lo que no puede ejecutar esta declaración (3)
El código anterior exporta datos sin las columnas de encabezado, lo cual es extraño. Aquí está cómo hacerlo. Tienes que fusionar los dos archivos más tarde usando un editor de texto.
SELECT column_name FROM information_schema.columns WHERE table_schema = ''my_app_db'' AND table_name = ''customers'' INTO OUTFILE ''C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/customers_heading_cols.csv'' FIELDS TERMINATED BY '''' OPTIONALLY ENCLOSED BY ''"'' LINES TERMINATED BY '','';
Encontré un problema de este tipo: Código de error: 1290. El servidor MySQL se ejecuta con la opción --secure-file-priv, por lo que no puedo ejecutar esta declaración cuando intenté ejecutar la declaración MySQL (Windows):
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE ''report.csv''
FIELDS TERMINATED BY ''#''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n''
Cuando lo ejecuto sin:
INTO OUTFILE ''report.csv''
FIELDS TERMINATED BY ''#''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n''
Entonces funciona. Además, la misma declaración con INTO OUTFILE xxx
realmente funcionó antes de que reinstalé el servidor MySQL.
¿Alguien tiene ideas de cómo lidiar con este error?
Si cambió my.ini
y reinició mysql
y aún recibe este error, verifique la ruta del archivo y reemplace "/"
por "/"
. Resolví mi problema después de reemplazar.
Una respuesta rápida, que no requiere que edite ningún archivo de configuración (y funciona en otros sistemas operativos, así como en Windows), es simplemente encontrar el directorio en el que está permitido guardar:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
Y luego asegúrese de usar ese directorio en la cláusula '' INTO OUTFILE
'' de sus SELECT
:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE ''/var/lib/mysql-files/report.csv''
FIELDS TERMINATED BY ''#''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n''
Respuesta original
He tenido el mismo problema desde la actualización de MySQL 5.6.25 a 5.6.26.
En mi caso (en Windows), mirar el servicio MySQL56 me muestra que el archivo de opciones / configuración que se está utilizando cuando se inicia el servicio es C:/ProgramData/MySQL/MySQL Server 5.6/my.ini
Al abrir este archivo puedo ver que la opción secure-file-priv
se ha agregado en esta nueva versión de MySQL Server con un valor predeterminado:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Puede comentar esto (si está en un entorno que no es de producción), o experimentar con cambiar la configuración. No olvides reiniciar el servicio después de hacer cambios.
Alternativamente, puede intentar guardar su salida en la carpeta permitida (la ubicación puede variar dependiendo de su instalación):
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''