Here is how to configure MySQL so you can load data without getting the following error:
Loading local data is disabled; this must be enabled on both the client and server sides
In my example, I’m running MySQL 8 in a Docker Swarm and connecting using the command-line client.
On the server side, you need to set local-infile to ON.
Here is what the MySQL section of the compose file looks like. Note the setting has been added to the command: section.
mysql:
image: mysql:8.0.22
command: --default-authentication-plugin=mysql_native_password --local-infile=ON
hostname: mysql
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_password
secrets:
- mysql_password
On the client side, you have to set local-infile=1. This can be done directly in the call to the client
mysql --local-infile=1
or you can set it in the configuration file
mysql --defaults-extra-file=./mysql.conf
with the configuration file (ex: mysql.conf) set something like this:
[client]
host = <your hostname>
user = <your username>
password = <your password>
local-infile=1
With these two settings, you should be good to go!
