mysql load-data-infile mysql-error-1045

acceso denegado para cargar datos de carga en MySQL



load-data-infile mysql-error-1045 (8)

Utilizo consultas de MySQL todo el tiempo en PHP, pero cuando pruebo LOAD DATA INFILE, aparece el siguiente error #1045 - Access denied for user ''user''@''localhost'' (using password: YES) ¿Alguien sabe lo que esto significa?


Asegúrese de que su usuario de MySQL tenga el privilegio FILE otorgado.

Si está en un alojamiento web compartido, existe la posibilidad de que su proveedor de alojamiento lo bloquee.


Esto también me pasó a mí y, a pesar de haber seguido todos los pasos descritos por Yamir en su publicación, no pude hacerlo funcionar.

El archivo estaba en /tmp/test.csv con 777 permisos. El usuario de MySQL tenía permisos de archivo, la opción LOCAL no estaba permitida por mi versión de MySQL, así que estaba atascado.

Finalmente pude resolver el problema ejecutando:

sudo chown mysql:mysql /tmp/test.csv


Intenta usar este comando:

load data local infile ''home/data.txt'' into table customer;

Esto debería funcionar. Funcionó en mi caso.


La cadena de Lyon me dio un muy buen consejo: en Windows, tenemos que usar slahes y no barras invertidas. Este código funciona para mí:

File tempFile = File.createTempFile(tableName, ".csv"); FileUtils.copyInputStreamToFile(data, tempFile); JdbcTemplate template = new JdbcTemplate(dataSource); String path = tempFile.getAbsolutePath().replace(''//', ''/''); int rows = template.update(MessageFormat .format("LOAD DATA LOCAL INFILE ''''{0}'''' INTO TABLE {1} FIELDS TERMINATED BY '''',''''", path, tableName)); logger.info("imported {} rows into {}", rows, tableName); tempFile.delete();


Me encontré con el mismo problema y lo resolví siguiendo estos pasos:

  • activar la variable load_infile
  • gran permiso de archivo para mi usuario personalizado de mysql
  • desactivar la variable secure_file_priv (mi archivo fue cargado por el servidor web a la carpeta / tmp, que por supuesto no es el directorio seguro de myslq / var / lib / mysql-file)

Para este 3er punto, puede consultar: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv

BR,

ANUNCIO


Me encontré con este problema también. Tuve que agregar "LOCAL" a mi declaración de SQL.

Por ejemplo, esto da el problema de permiso:
LOAD DATA INFILE ''{$file}'' INTO TABLE {$table}

Agregue "LOCAL" a su extracto y el problema de permisos debería desaparecer. Al igual que:
LOAD DATA LOCAL INFILE ''{$file}'' INTO TABLE {$table}


Probablemente significa que la contraseña que proporcionó para ''user''@''localhost'' es incorrecta.


Tuve este problema Busqué y no encontré una respuesta satisfactoria. Resumo a continuación los resultados de mis búsquedas.

El error de acceso denegado podría significar que:

  • ''user'' @ ''localhost'' no tiene el privilegio FILE ( GRANT FILE on *.* to user@''localhost'' ); o,
  • el archivo que intenta cargar no existe en la máquina que ejecuta el servidor mysql (si usa LOAD DATA INFILE); o,
  • el archivo que intenta cargar no existe en su máquina local (si usa LOAD DATA LOCAL INFILE); o,
  • el archivo que está intentando cargar no es legible en todo el mundo (necesita que el archivo y todos los directorios principales sean legibles por todo el mundo: directorio chmod 755 y chmod 744 file.dat)