10bet网址
MySQL 5.6参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 29.4 mb
PDF (A4)- 29.5 mb
手册页(TGZ)- 190.2 kb
手册页(邮政编码)- 305.0 kb
信息(Gzip)- 2.8 mb
信息(邮政编码)- 2.8 mb
本手册节选

MySQL 5.6参考手册/.../ 本地加载数据的安全考虑

6.1.6 LOAD DATA LOCAL的安全注意事项

加载数据语句将数据文件加载到表中。语句可以加载位于服务器主机上的文件,或者,如果当地的关键字,在客户端主机上指定。

当地的版本的加载数据有两个潜在的安全问题:

  • 因为数据加载本地是一条SQL语句,解析发生在服务器端,文件从客户端主机到服务器主机的传输是由MySQL服务器发起的,它告诉客户端语句中命名的文件。理论上,打过补丁的服务器可以告诉客户端程序传输服务器选择的文件,而不是语句中指定的文件。这样的服务器可以访问客户端用户具有读访问权的客户端主机上的任何文件。(打过补丁的服务器实际上可以用文件传输请求回复任何语句,而不仅仅是数据加载本地因此,一个更根本的问题是,客户端不应该连接到不受信任的服务器。)

  • 在客户机从Web服务器连接的Web环境中,用户可以使用数据加载本地读取Web服务器进程具有读访问权的任何文件(假设用户可以对SQL服务器运行任何语句)。在这种环境中,相对于MySQL服务器的客户机实际上是Web服务器,而不是由连接到Web服务器的用户运行的远程程序。

为避免连接到不受信任的服务器,客户端可以建立一个安全连接,并通过使用——ssl-verify-server-cert选项和适当的CA证书。

为了避免加载数据问题,客户应避免使用当地的

管理员和应用程序可以通过以下方式配置是否允许本地数据加载:

  • 在服务器端:

    • local_infile系统变量控制服务器端当地的能力。根据local_infile设置时,服务器拒绝或允许请求本地数据加载的客户机加载本地数据。

    • 默认情况下,local_infile启用。使服务器拒绝或允许数据加载本地语句显式地(无论在构建时或运行时如何配置客户机程序和库)开始mysqldlocal_infile禁用或启用。local_infile也可以在运行时设置。

  • 在客户端:

    • ENABLED_LOCAL_INFILECMake选项控制编译后的默认值当地的MySQL客户端库的功能(参见第2.9.7节“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
    • 在所有情况下,成功使用a当地的客户机的加载操作还要求服务器允许本地加载。

如果当地的在服务器端或客户端上,试图发出数据加载本地语句收到以下错误消息:

错误1148:使用的命令在这个MySQL版本中不被允许