的加载数据
语句将数据文件加载到一个表。该声明可以加载一个文件位于服务器主机,或者,如果当地的
指定关键字,在客户端主机。
的当地的
版本的加载数据
有两个潜在的安全问题:
因为
数据加载本地
是一个SQL语句,解析发生在服务器端,而客户端主机的文件转移到服务器主机是由MySQL服务器,告诉客户端在声明中指定的文件。理论上,一个补丁服务器可以告诉客户端程序将一个文件服务器的选择,而不是在声明中指定的文件。这样的服务器可以访问任何文件在客户端主机的客户端用户具有读访问。(补丁服务器可能事实上与文件传输请求回复任何声明,不只是数据加载本地
,所以一个更根本的问题是,客户端不应该连接到不受信任的服务器)。在Web环境中,客户端是连接从Web服务器,用户可以使用
数据加载本地
读任何文件,Web服务器进程读访问权(假设一个用户可以运行任何语句对SQL server)。在这种环境下,客户对MySQL服务器实际上是Web服务器,而不是远程程序由用户连接到Web服务器。
为了避免连接不受信任的服务器,客户端可以建立一个安全连接和服务器验证身份通过连接使用——ssl-mode = VERIFY_IDENTITY
选择和适当的CA证书。
为了避免加载数据
问题,客户应该避免使用当地的
除非正确的客户端已经采取了预防措施。
为控制加载本地数据,MySQL许可的能力被启用或禁用。此外,MySQL 8.0.21, MySQL使客户能够限制本地数据加载操作文件位于一个指定的目录。
管理员和应用程序可以配置是否允许加载本地数据如下:
在服务器端:
的
local_infile
系统变量控制端当地的
能力。根据local_infile
设置,服务器拒绝或允许本地数据加载请求的客户端本地数据加载。默认情况下,
local_infile
是禁用的。(这是一个变化从以前版本的MySQL)。导致服务器拒绝或允许数据加载本地
声明明确(不管客户程序和库的配置在构建时或者运行时),开始mysqld与local_infile
禁用或启用。local_infile
也可以在运行时设置。
在客户端:
的
ENABLED_LOCAL_INFILE
CMake选择控制对违约当地的
MySQL客户端库(见功能MySQL源配置选项)。因此客户没有明确的安排当地的
禁用或启用根据能力ENABLED_LOCAL_INFILE
设置在MySQL创建时指定。默认情况下,在MySQL客户端库编译二进制发行版
ENABLED_LOCAL_INFILE
禁用。如果你从源代码编译MySQL,配置它ENABLED_LOCAL_INFILE
禁用或启用基于客户是否应该没有明确的安排当地的
禁用或启用能力。为客户端程序,使用C API,本地数据加载能力是由默认编译成MySQL客户端库。显式地启用或禁用它,调用
mysql_options ()
C API函数来禁用或启用MYSQL_OPT_LOCAL_INFILE
选择。看到mysql_options ()。为mysql客户端,本地数据加载能力是由默认编译成MySQL客户端库。禁用或启用它显式地使用
——local-infile = 0
或——local-infile (= 1)
选择。为mysqlimport客户端,本地数据加载默认情况下是不习惯的。禁用或启用它显式地使用
——当地= 0
或——当地(= 1)
选择。如果你使用
数据加载本地
在Perl脚本或其他程序读取(客户端)
从选项文件中,您可以添加一个local-infile
选项设置这个群体。防止问题程序不理解这个选项,指定使用宽松的,
前缀:[客户]loose-local-infile = 0
或者:
[客户]loose-local-infile = 1
在所有情况下,成功的使用
当地的
由客户机还要求服务器加载操作允许本地加载。
如果当地的
功能被禁用,在服务器或客户端,客户端试图发出数据加载本地
声明收到以下错误消息:
错误3950(42000):禁用加载本地数据;这必须启用客户端和服务器端
MySQL 8.0.21, MySQL客户端库使客户机应用程序能够限制本地数据加载操作文件位于一个指定的目录。某些MySQL客户程序利用此功能。
客户端程序,使用C API可以控制哪些文件允许加载数据加载使用MYSQL_OPT_LOCAL_INFILE
和MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项的mysql_options ()
C API函数(见mysql_options ())。
的影响MYSQL_OPT_LOAD_DATA_LOCAL_DIR
取决于当地的
数据加载是启用或禁用:
如果
当地的
启用数据加载,默认情况下在MySQL客户端库或显式地启用MYSQL_OPT_LOCAL_INFILE
,MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项没有影响。如果
当地的
数据加载是禁用的,默认情况下在MySQL客户端库或显式禁用MYSQL_OPT_LOCAL_INFILE
,MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项可以用来指定允许加载本地文件目录。在这种情况下,当地的
数据加载是允许的,但限于文件位于指定的目录。的解释MYSQL_OPT_LOAD_DATA_LOCAL_DIR
值如下:如果该值为null指针(默认),它的名字没有目录,因此不允许文件
当地的
数据加载。如果该值是一个目录路径名,
当地的
数据加载是允许的,但限于文件位于指定的目录。比较的目录路径名和加载的文件路径名是区分大小写的,不管底层文件系统的大小写敏感性。
MySQL客户端程序使用前面mysql_options ()
选项如下:
的mysql客户端有一个
——load-data-local-dir
选项,将一个目录路径或一个空字符串。mysql使用选项值设置MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项(一个空字符串设置空指针的值)。的影响——load-data-local-dir
取决于当地的
启用数据加载:如果
当地的
默认启用了数据加载,要么在MySQL客户端库或通过指定——local-infile (= 1)
,——load-data-local-dir
选择将被忽略。如果
当地的
数据加载是禁用的,默认情况下在MySQL客户端库或通过指定——local-infile = 0
,——load-data-local-dir
选择适用。
当
——load-data-local-dir
适用时,选项值指定的目录必须位于本地数据文件。比较的目录路径名和加载的文件路径名是区分大小写的,不管底层文件系统的大小写敏感性。如果选项值是空字符串,它的名字没有目录,因此不允许加载本地数据文件。mysqlimport集
MYSQL_OPT_LOAD_DATA_LOCAL_DIR
it过程的每个文件,包含该文件的目录允许本地加载目录。数据加载操作的对应
加载数据
语句,mysqlbinlog从二进制日志事件提取文件,将它们作为临时文件写入本地文件系统,并写道数据加载本地
语句导致文件被加载。默认情况下,mysqlbinlog写这些临时文件操作系统特定的目录中。的——局部负荷
选项可用于显式地指定的目录mysqlbinlog应该准备本地临时文件。因为其他进程可以写文件默认的系统特定的目录,指定是明智的
——局部负荷
选项mysqlbinlog为数据文件指定一个不同的目录,然后指定相同的目录中指定——load-data-local-dir
选项mysql当处理的输出mysqlbinlog。
MySQL Shell提供了许多实用程序转储表,模式,或服务器实例和负载到其他实例。当你使用这些实用程序来处理数据,MySQL Shell提供了额外的功能,比如输入预处理,多线程并行加载文件压缩和解压,处理访问对象存储桶甲骨文云基础设施。得到最好的功能,总是使用最新版本可用的MySQL壳牌的转储和转储装载实用程序。
MySQL壳牌的数据上传工具使用数据加载本地INFILE
报表上传数据,所以local_infile
系统变量必须设置在
在目标服务器上实例。你可以在上传数据,之后再删除。实用程序处理文件传输请求安全处理这个话题讨论的安全注意事项。
MySQL外壳包括这些转储和转储装载实用程序:
-
表导出工具
util.exportTable ()
-
出口MySQL关系表到一个数据文件,可以上传到一个MySQL服务器实例使用MySQL壳牌的平行表导入实用工具,导入到另一个应用程序,或用作逻辑备份。效用有预设选择和定制选项来生成不同的输出格式。
-
平行表导入实用程序
util.importTable ()
-
港口MySQL关系表的数据文件。数据文件可以从MySQL壳牌的输出表出口效用或另一个格式支持的效用的预设和定制选项。该实用程序可以执行输入预处理之前将数据添加到表。它可以接受多个数据文件合并成一个单一的关系表,并自动解压缩压缩文件。
-
实例转储工具
util.dumpInstance ()
、模式转储工具util.dumpSchemas ()
和表转储效用util.dumpTables ()
-
出口一个实例,模式,或表的转储文件,然后可以上传到一个MySQL实例使用MySQL壳牌的转储装载实用程序。公用事业提供甲骨文云基础设施对象存储流媒体,MySQL数据库服务兼容性检查和修改,并且能够进行排练识别问题在继续之前的转储。
-
转储装载实用程序
util.loadDump ()
-
进口使用MySQL壳牌的实例创建转储文件,模式,或表转储工具到一个MySQL数据库服务数据库系统或一个MySQL服务器实例。公用事业管理上传过程并提供数据流从远程存储、并行加载表或表的块,进度状态跟踪,简历和复位功能,和并发加载的选项而抛售仍在发生。MySQL壳牌的对照表可以使用import工具结合转储装载实用程序在上传之前修改数据到目标MySQL实例。
实用程序的细节,请参阅MySQL壳工具。