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

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

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

Tuve el siguiente error:

El servidor MySQL se ejecuta con la opción –secure-file-priv, por lo que no puede ejecutar esta statement

¿Cómo abordo este error?

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

Estoy usando MySQL 5.6

Está funcionando según lo previsto. Su servidor MySQL se ha iniciado con la opción –secure-file-priv , que básicamente limita desde qué directorios puede cargar archivos utilizando 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. Deshabilitar secure-file-priv . Esto debe eliminarse del inicio y no puede modificarse dinámicamente. Para ello, compruebe los parámetros de inicio de MySQL (según la plataforma) y my.ini.

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

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

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

Si se especifica LOCAL, el progtwig cliente lee el archivo en el host del cliente y lo envía al servidor. El archivo se puede dar como un nombre de ruta completo para especificar su ubicación exacta. Si se proporciona como un nombre de ruta relativo, el nombre se interpreta en relación con el directorio en el que se inició el progtwig cliente.

En Ubuntu 14 y Mysql 5.5.53, esta configuración parece estar habilitada por defecto. Para deshabilitarlo, necesita agregar secure-file-priv = "" a su archivo my.cnf en el grupo de configuración mysqld. p.ej:-

 [mysqld] secure-file-priv = "" 

Estoy trabajando en MySQL5.7.11 en Debian, el comando que funcionó para mí para ver el directorio es:

mysql> SELECT @@ global.secure_file_priv;

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

  1. Detenga el servicio del servidor MySQL entrando en services.msc .
  2. Vaya 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. Busque ‘secure-file-priv’.
  5. Comenta la línea agregando ‘#’ al comienzo de la línea.
  6. Guarda el archivo.
  7. Inicie el servicio del servidor MySQL entrando en services.msc .

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

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

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

Tuve el mismo problema con ‘secure-file-priv’. Comentar en el archivo .ini no funcionó y tampoco mover el archivo en el directorio especificado por ‘secure-file-priv’.

Finalmente, como sugirió dbc, hacer que ‘secure-file-priv’ sea igual a una cadena vacía trabajada. Entonces, si alguien está atascado después de intentar las respuestas anteriores, con suerte, esto ayudará.

Tenía todo tipo de problemas con esto. Estaba cambiando my.cnf y todo tipo de cosas locas 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 solucionarlo abriendo /usr/local/mysql/support-files/mysql.server 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=$? 

Tuve este problema en Windows 10. “–secure-file-priv en MySQL” Para resolver esto, hice lo siguiente.

  1. En la búsqueda de Windows (abajo a la izquierda) escribí “powershell”.
  2. Haz clic derecho en powershell y ejecuta como administrador.
  3. Navegado al archivo bin del servidor. (C: \ Archivos de progtwig \ MySQL \ MySQL Server 5.6 \ bin);
  4. Typed ./mysqld
  5. Presione enter”

El servidor comenzó como se esperaba.