在使用docker运行sql时候遇到了安全问题,关于调用本地的tbl文件报错,需要打开本地文件开关
错误信息 [ERR] 3948 - Loading local data is disabled; this must be enabled on both the client and server sides
表明问题并非出在路径中的斜杠,而是由于 MySQL 服务端和客户端均未启用加载本地数据的选项。
这个错误与路径格式无关,而是与 MySQL 的安全设置有关。
可以通过/etc/mysql下的配置文件my.ini或者my.cnf配置完成
[mysqld]
local_infile=1
可是配置完后重启并没有修改成功,所以只能每次重启后手动设置暂时使用,这个方法只能暂时用一下,不过在这个场景下适用,因为这个设置开一次导入数据就可以关掉了,本来就是不推荐开启
执行docker exec -it mysql2 mysql -uroot -p -e "SHOW GLOBAL VARIABLES LIKE 'local_infile';"
然后查询docker exec -it mysql2 mysql -uroot -p -e "SHOW GLOBAL VARIABLES LIKE 'local_infile';"
输入mysql密码后能得到
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
表示已经开启成功,就可以导入数据了
注意这个方法只是暂时设置,需要每次重启都能设置的需要在my.ini里面配置,可以参考这篇mysql学习笔记整理——my.ini配置文件-优快云博客,如果win下的docker不管是挂载卷还是修改文件他都不读取再用这个暂时修改的方法