¿Cómo debo abordar secure secure-file-priv en MySQL?


Estoy aprendiendo MySQL y traté de usar una cláusula LOAD DATA. Cuando lo usé de la siguiente manera:

LOAD DATA INFILE "text.txt" INTO table mytable;

Tengo el siguiente error:

El servidor MySQL se está ejecutando con la opción secure secure-file-priv por lo que no puede ejecutar esta instrucción

¿Cómo puedo hacer frente a este error?

He comprobado otra pregunta en el mismo mensaje de error, pero todavía no puedo encontrar una solución.

Estoy usando MySQL 5.6

Author: Community, 2015-09-23

9 answers

Está funcionando como estaba previsto. Su servidor MySQL se ha iniciado con la opción secure secure-file-priv que básicamente limita desde qué directorios puede cargar archivos usando LOAD DATA INFILE.

Puede usar SHOW VARIABLES LIKE "secure_file_priv"; para ver el directorio que se ha configurado.

Tienes dos opciones:

  1. Mueva su archivo al directorio especificado por secure-file-priv.
  2. Desactivar secure-file-priv. Esto debe eliminarse del inicio y no puede modificarse dinámicamente. Para hacer esto, compruebe su inicio MySQL arriba parámetros (dependiendo de la plataforma) y mi.ini.
 287
Author: vhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-23 10:54:17

Tuve el mismo problema. Finalmente resolví usando la opción LOCAL en el comando

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

Puedes encontrar más información aquí http://dev.mysql.com/doc/refman/5.7/en/load-data.html

Si se especifica LOCAL, el archivo es leído por el programa cliente en el host cliente y enviado al servidor. El archivo se puede dar como un completo nombre de ruta para especificar su ubicación exacta. Si se da como una ruta relativa nombre, el nombre se interpreta en relación con el directorio en que el se inició el programa cliente.

 147
Author: Staza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-16 11:10:59

En Ubuntu 14 y Mysql 5.5.53 esta configuración parece estar habilitada por defecto. Para desactivarlo necesitas agregar secure-file-priv = "" a tu my.archivo cnf bajo el grupo de configuración mysqld. eg: -

[mysqld]
secure-file-priv = ""
 77
Author: Mustafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-15 04:15:56

Estoy trabajando en MySQL5.7. 11 en Debian, el comando que me funcionó para ver el directorio es:

Mysql> SELECCIONAR @@global.secure_file_priv;

 24
Author: CarlosArturoFyuler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 19:34:43

Esto es lo que funcionó para mí en Windows 7 para desactivar secure-file-priv (Opción # 2 de respuesta de vhu):

  1. Detenga el servicio MySQL server entrando en services.msc.
  2. Ir a C:\ProgramData\MySQL\MySQL Server 5.6 (ProgramData era una carpeta oculta en mi caso).
  3. Abra el archivo my.ini en el bloc de notas.
  4. Busca 'secure-file-priv'.
  5. Comente la línea añadiendo '#' al principio de la línea.
  6. Guarde el archivo.
  7. Inicie el servicio del servidor MySQL entrando en services.msc.

Para MySQL Server 5.7.16 y superior, consulte el comentario de dbc a continuación.

 10
Author: Ramnath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-26 04:35:32

Si el archivo es local en su máquina use el LOCAL en su comando

LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;
 6
Author: garyrgilbert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-04 14:07:29

Tuve el mismo problema con 'secure-file-priv'. Comentando en el .el archivo ini no funcionó y tampoco lo hizo mover el archivo en el directorio especificado por 'secure-file-priv'.

Finalmente, como sugirió dbc, hacer 'secure-file-priv' igual a una cadena vacía funcionó. Entonces, si alguien se queda atascado después de probar las respuestas anteriores, esperemos que hacer esto ayude.

 4
Author: Rsc Rsc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-02 20:59:10

Tuve todo tipo de problemas con esto. Estaba cambiando mi.cnf y todo tipo de locuras que otras versiones de este problema intentaron mostrar.

Lo que funcionó para mí:

El error que estaba recibiendo

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Pude arreglarlo abriendo /usr/local/mysql/support-files/mysql.servidor y cambiando la siguiente línea:

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

A

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
 3
Author: notthehoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-01 20:54:11

Tuve este problema en Windows 10. "secure secure-file-priv in MySQL" Para resolver esto hice lo siguiente.

  1. En la búsqueda de Windows (abajo a la izquierda) escribí "powershell".
  2. Hizo clic con el botón derecho en powershell y se ejecutó como administrador.
  3. Navegó hasta el archivo bin del servidor. (C:\Program Files\MySQL\MySQL Server 5.6\bin);
  4. Escrito./ mysqld
  5. Pulse"enter"

El servidor se inició como se esperaba.

 1
Author: Jason Allshorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-01 22:05:45