with the servidor secure running rodando priv opción infile está error desactivar data con mysql database

the - mysql secure file priv directory



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

@vhu

Hice el SHOW VARIABLES LIKE "secure_file_priv"; y devolvió C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ así que cuando lo conecté, todavía no funcionaba.

Cuando fui directamente al archivo my.ini descubrí que la ruta tiene un formato un poco diferente: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads

Luego, cuando lo ejecuté con eso, funcionó. La única diferencia es la dirección de las barras.

Estoy aprendiendo MySQL e intenté usar una cláusula LOAD DATA . Cuando lo usé como a continuación:

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 declaración

¿Cómo abordo este error?

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

Estoy usando MySQL 5.6


Ejemplo detallado sobre cómo verificar secure_file_priv, otorgar usuario y seleccionar en outfile yippeecode.com


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

[mysqld] 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. Comente la línea agregando ''#'' al comienzo de la línea. Para MySQL Server 5.7.16 y superior, comentar no funcionará. Debe configurarlo en una cadena vacía como esta: secure-file-priv=""
  6. Guarda el archivo.
  7. Inicie el servicio del servidor MySQL yendo a services.msc .

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

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


Funciona según lo previsto. Su servidor MySQL se ha iniciado con la --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. Deshabilitar secure-file-priv . Esto debe eliminarse del inicio y no puede modificarse dinámicamente. Para hacer esto, verifique los parámetros de inicio de MySQL (dependiendo de la plataforma) y my.ini.

Lo que funcionó para mí:

  1. Coloque su archivo dentro de la carpeta especificada en secure-file-priv .

Para encontrar ese tipo:

mysql> muestra variables como "secure_file_priv";


  1. Comprueba si tienes local_infile = 1 .

Haz eso escribiendo:

mysql> muestra variables como "local_infile";

Si lo consigues:

$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=$?

Luego configúrelo en uno escribiendo:

mysql> set global local_infile = 1;


  1. Especifique la ruta completa para su archivo. En mi caso:

mysql> cargar el archivo de datos "C: / ProgramData / MySQL / MySQL Server 8.0 / Uploads / file.txt" en la prueba de tabla;


MySQL usa esta variable del sistema para controlar dónde puede importar sus archivos

mysql> SHOW VARIABLES LIKE "secure_file_priv"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | | +------------------+-------+

Entonces, el problema es cómo cambiar las variables del sistema, como secure_file_priv .

  1. apagado mysqld
  2. sudo mysqld_safe --secure_file_priv=""

ahora puedes ver así:

/var/lib/mysql-files/* rw


Para la versión mysql 8.0 puede hacer esto:

  1. mysql.server stop
  2. mysql.server start --secure-file-priv = ''''

Funcionó para mí en Mac High Sierra


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

+---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+


Si está ejecutando en Ubuntu, también puede necesitar configurar Apparmor para permitir que MySQL escriba en su carpeta, por ejemplo, aquí está mi configuración:

Agregue esta línea al archivo /etc/apparmor.d/usr.sbin.mysqld:

[client] loose-local-infile = 1 [mysqld] secure-file-priv = ""

Luego agregue estas 2 líneas de configuración a las secciones /etc/mysql/my.cnf:

select id from blahs into outfile ''/var/lib/mysql-files/blahs'';

Aquí está mi SQL:

select id from blahs into outfile ''/var/lib/mysql-files/blahs'';

A mi me funciono. ¡Buena suerte!


Tuve el mismo problema con ''secure-file-priv''. Los comentarios en el archivo .ini no funcionaron y tampoco lo hizo mover el archivo en el directorio especificado por ''secure-file-priv''.

Finalmente, como sugirió dbc, funcionó ''secure-file-priv'' igual a una cadena vacía. Entonces, si alguien está atrapado después de intentar las respuestas anteriores, espero que esto ayude.


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 programa del cliente lee el archivo en el host del cliente y lo envía al servidor. El archivo se puede proporcionar 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 programa cliente.


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 se ejecuta como administrador.
  3. Navegado al archivo bin del servidor. (C: / Archivos de programa / MySQL / MySQL Server 5.6 / bin);
  4. Mecanografiado ./mysqld
  5. Presione enter"

El servidor se inició como se esperaba.


Tuve todo tipo de problemas con esto. Estaba cambiando my.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 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" --secure-file-priv="" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

a

mysql> SHOW VARIABLES LIKE "secure_file_priv"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | NULL | +------------------+-------+