secure quitar priv outfile into error disable desactivar mysql

quitar - mysql-- secure file priv error



MySQL ERROR 1290(HY000)--secure-file-priv option (7)

Estoy tratando de escribir los resultados del script MySQL en un archivo de texto usando el siguiente código en mi script.

SELECT p.title, p.content, c.name FROM post p LEFT JOIN category c ON p.category_id=c.id INTO OUTFILE ''D:/MySql/mysqlTest.txt'';

Sin embargo, estoy recibiendo lo siguiente

ERROR 1290 (HY000): el servidor MySQL se ejecuta con la opción --secure-file-priv por lo que no puede ejecutar esta declaración

¿Cómo puedo solucionar esto?


  1. Edite el (archivo /etc/my.cnf para CentOS) o (archivo my.ini para Windows)
  2. Agregue la línea secure-file-priv = "" al final
  3. Detener el servicio mysql usando systemctl stop mysqld
  4. Reinicie usando systemctl start mysqld

Ahora le permitirá importar y exportar los datos.


En mi my.ini solo tuve

# Secure File Priv.

y traté de poner:

# Secure File Priv. secure-file-priv = ""

y

# Secure File Priv. secure-file-priv = NULL

sin hacer que funcione.

Finalmente borré la línea y me fui solo:

secure-file-priv = ""

Trabajando correctamente.


Este es el ejemplo de mi SQL que funcionó perfectamente en WAMP SERVER (windows):

SELECT display_name,user_email,user_registered FROM test_wp_users ORDER BY user_registered ASC INTO OUTFILE ''C:/wamp64/tmp/usersbyemail.csv'' FIELDS TERMINATED BY '','' ENCLOSED BY ''"'' LINES TERMINATED BY ''/n'';

PD: Tenga en cuenta que las barras en la ruta deben ir de izquierda a derecha para funcionar perfectamente en MYSQL.


No puede exportar datos tal como están configurados en los archivos de configuración de mysql. Abra el archivo de configuración my.cnf y verifique.

Cita de MySQL doc

Esta variable se usa para limitar el efecto de las operaciones de importación y exportación de datos, como las que se realizan con las SELECT ... INTO OUTFILE LOAD DATA y SELECT ... INTO OUTFILE y la función LOAD_FILE() . Estas operaciones están permitidas solo para los usuarios que tienen el privilegio de FILE .

secure_file_priv se puede configurar de la siguiente manera:

  • Si está vacío, la variable no tiene efecto.

  • Si se configura con el nombre de un directorio, el servidor limita las operaciones de importación y exportación para trabajar solo con los archivos en ese directorio. El directorio debe existir; El servidor no lo creará.

  • Si se establece en NULL , el servidor deshabilita las operaciones de importación y exportación. Este valor está permitido a partir de MySQL 5.7.6.

(Un valor vacío es el valor predeterminado o se puede especificar explícitamente en my.cnf como secure_file_priv="" . Un valor NULL se puede establecer con secure_file_priv=NULL ).

Por lo tanto, si desea exportar datos, debe comentar esta opción y reiniciar el servidor mysql. Entonces podrás exportar.


PARA MAC OS, si está instalado vía HOMEBREW:

Editar mi.cnf RUTA: /usr/local/etc/my.cnf

Copia esto:

# Default Homebrew MySQL server config [mysqld] # Only allow connections from localhost bind-address = 0.0.0.0 secure-file-priv = ''''

SALVAR

Explicación: Secure_file_prive = NULL - Limitar mysqld no está permitido importar y exportar Secure_file_priv = ''/ tmp /'' - Limitar mysqld importar y exportar solo puede ocurrir en / tmp / directorio Secure_file_priv = '''' - no restringe la importación de mysqld


Reemplace "/" a "/" en su ruta de archivo.

Me gusta esto:

INTO OUTFILE ''D:/MySql/mysqlTest.txt'';


Ubuntu 16.04 (FÁCIL): Averigüe dónde se le permite escribir

mysql> SELECT @@GLOBAL.secure_file_priv; +---------------------------+ | @@GLOBAL.secure_file_priv | +---------------------------+ | /var/lib/mysql-files/ | +---------------------------+ 1 row in set (0.00 sec)

Entonces, simplemente escribe allí

mysql> SELECT * FROM train INTO OUTFILE ''/var/lib/mysql-files/test.csv'' FIELDS TERMINATED BY '',''; Query OK, 992931 rows affected (1.65 sec) mysql>

Mac OSX: Mysql instalado a través de MAMP

Averigua dónde puedes escribir

mysql> SELECT @@GLOBAL.secure_file_priv; +---------------------------+ | @@GLOBAL.secure_file_priv | +---------------------------+ | NULL | +---------------------------+ 1 row in set (0.00 sec)

NULO significa que estás jodido, así que debes crear el archivo "~ / .my.cnf"

Habilite la lectura / escritura para MySQL instalado a través de MAMP (en Mac):

  1. abrir "MAMP" usar foco
  2. haga clic en "Detener servidores"
  3. edite ~ / .my.cnf (usando vi o su editor favorito) y agregue las siguientes líneas:

    $ vi ~ / .my.cnf

[mysqld_safe] [mysqld] secure_file_priv="/Users/russian_spy/"

  1. haga clic en "Iniciar Servidores" (en la ventana MAMP)

Ahora comprueba si funciona:

a. iniciar mysql (el usuario MAMP predeterminado es root, la contraseña también es root)

$ /Applications/MAMP/Library/bin/mysql -u root -p

segundo. en mysql mira los caminos en la lista blanca

mysql> SELECT @@GLOBAL.secure_file_priv; +---------------------------+ | @@GLOBAL.secure_file_priv | +---------------------------+ | /Users/russian_spy/ | +---------------------------+ 1 row in set (0.00 sec)

do. Finalmente, pruebe exportando un train tablas a un archivo CSV

mysql> SELECT * FROM train INTO OUTFILE ''/Users/russian_spy/test.csv'' FIELDS TERMINATED BY '',''; Query OK, 992931 rows affected (1.65 sec) mysql>