<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h3 class="title">
      <a name="load-data-local-security">
      </a>
      8.1.6 Security Considerations for LOAD DATA LOCAL
     </h3>
    </div>
   </div>
  </div>
  <a class="indexterm" name="idm46045252580688">
  </a>
  <p>
   The
   <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
    <code class="literal">
     LOAD DATA
    </code>
   </a>
   statement loads a
      data file into a table. The statement can load a file located on
      the server host, or, if the
   <code class="literal">
    LOCAL
   </code>
   keyword is
      specified, on the client host.
  </p>
  <p>
   The
   <code class="literal">
    LOCAL
   </code>
   version of
   <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
    <code class="literal">
     LOAD
      DATA
    </code>
   </a>
   has two potential security issues:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      Because
      <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
       <code class="literal">
        LOAD DATA
          LOCAL
       </code>
      </a>
      is an SQL statement, parsing occurs on the
          server side, and transfer of the file from the client host to
          the server host is initiated by the MySQL server, which tells
          the client the file named in the statement. In theory, a
          patched server could tell the client program to transfer a
          file of the server's choosing rather than the file named in
          the statement. Such a server could access any file on the
          client host to which the client user has read access. (A
          patched server could in fact reply with a file-transfer
          request to any statement, not just
      <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
       <code class="literal">
        LOAD DATA
          LOCAL
       </code>
      </a>
      , so a more fundamental issue is that clients
          should not connect to untrusted servers.)
     </p>
    </li>
    <li class="listitem">
     <p>
      In a Web environment where the clients are connecting from a
          Web server, a user could use
      <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
       <code class="literal">
        LOAD DATA
          LOCAL
       </code>
      </a>
      to read any files that the Web server process
          has read access to (assuming that a user could run any
          statement against the SQL server). In this environment, the
          client with respect to the MySQL server actually is the Web
          server, not a remote program being run by users who connect to
          the Web server.
     </p>
    </li>
   </ul>
  </div>
  <p>
   To avoid connecting to untrusted servers, clients can establish a
      secure connection and verify the server identity by connecting
      using the
   <a class="link" href="connection-options.html#option_general_ssl-mode">
    <code class="option">
     --ssl-mode=VERIFY_IDENTITY
    </code>
   </a>
   option
      and the appropriate CA certificate. To implement this level of
      verification, you must first ensure that the CA certificate for
      the server is reliably available to the replica, otherwise
      availability issues will result. For more information, see
   <a class="xref" href="connection-options.html#encrypted-connection-options" title="Command Options for Encrypted Connections">
    Command Options for Encrypted Connections
   </a>
   .
  </p>
  <p>
   To avoid
   <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
    <code class="literal">
     LOAD DATA
    </code>
   </a>
   issues, clients
      should avoid using
   <code class="literal">
    LOCAL
   </code>
   unless proper
      client-side precautions have been taken.
  </p>
  <p>
   For control over local data loading, MySQL permits the capability
      to be enabled or disabled. MySQL also enables clients to restrict
      local data loading operations to files located in a designated
      directory.
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      <a class="xref" href="load-data-local-security.html#load-data-local-configuration" title="Enabling or Disabling Local Data Loading Capability">
       Enabling or Disabling Local Data Loading Capability
      </a>
     </p>
    </li>
    <li class="listitem">
     <p>
      <a class="xref" href="load-data-local-security.html#load-data-local-permitted-files" title="Restricting Files Permitted for Local Data Loading">
       Restricting Files Permitted for Local Data Loading
      </a>
     </p>
    </li>
    <li class="listitem">
     <p>
      <a class="xref" href="load-data-local-security.html#load-data-local-shell" title="MySQL Shell and Local Data Loading">
       MySQL Shell and Local Data Loading
      </a>
     </p>
    </li>
   </ul>
  </div>
  <div class="simplesect">
   <div class="titlepage">
    <div>
     <div class="simple">
      <h4 class="title">
       <a name="load-data-local-configuration">
       </a>
       Enabling or Disabling Local Data Loading Capability
      </h4>
     </div>
    </div>
   </div>
   <p>
    Administrators and applications can configure whether to permit
        local data loading as follows:
   </p>
   <div class="itemizedlist">
    <ul class="itemizedlist" style="list-style-type: disc; ">
     <li class="listitem">
      <p>
       On the server side:
      </p>
      <div class="itemizedlist">
       <ul class="itemizedlist" style="list-style-type: circle; ">
        <li class="listitem">
         <p>
          The
          <a class="link" href="server-system-variables.html#sysvar_local_infile">
           <code class="literal">
            local_infile
           </code>
          </a>
          system
                variable controls server-side
          <code class="literal">
           LOCAL
          </code>
          capability. Depending on the
          <a class="link" href="server-system-variables.html#sysvar_local_infile">
           <code class="literal">
            local_infile
           </code>
          </a>
          setting,
                the server refuses or permits local data loading by
                clients that request local data loading.
         </p>
        </li>
        <li class="listitem">
         <p>
          By default,
          <a class="link" href="server-system-variables.html#sysvar_local_infile">
           <code class="literal">
            local_infile
           </code>
          </a>
          is
                disabled. (This is a change from previous versions of
                MySQL.) To cause the server to refuse or permit
          <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
           <code class="literal">
            LOAD DATA
                LOCAL
           </code>
          </a>
          statements explicitly (regardless of how
                client programs and libraries are configured at build
                time or runtime), start
          <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
           <span class="command">
            <strong>
             mysqld
            </strong>
           </span>
          </a>
          with
          <a class="link" href="server-system-variables.html#sysvar_local_infile">
           <code class="literal">
            local_infile
           </code>
          </a>
          disabled
                or enabled.
          <a class="link" href="server-system-variables.html#sysvar_local_infile">
           <code class="literal">
            local_infile
           </code>
          </a>
          can also
                be set at runtime.
         </p>
         <a class="indexterm" name="idm46045252544624">
         </a>
         <a class="indexterm" name="idm46045252543536">
         </a>
        </li>
       </ul>
      </div>
     </li>
     <li class="listitem">
      <p>
       On the client side:
      </p>
      <div class="itemizedlist">
       <ul class="itemizedlist" style="list-style-type: circle; ">
        <li class="listitem">
         <p>
          The
          <a class="link" href="source-configuration-options.html#option_cmake_enabled_local_infile">
           <code class="option">
            ENABLED_LOCAL_INFILE
           </code>
          </a>
          <span class="command">
           <strong>
            CMake
           </strong>
          </span>
          option controls the compiled-in
                default
          <code class="literal">
           LOCAL
          </code>
          capability for the
                MySQL client library (see
          <a class="xref" href="source-configuration-options.html" title="2.8.7 MySQL Source-Configuration Options">
           Section 2.8.7, “MySQL Source-Configuration Options”
          </a>
          ). Clients
                that make no explicit arrangements therefore have
          <code class="literal">
           LOCAL
          </code>
          capability disabled or enabled
                according to the
          <a class="link" href="source-configuration-options.html#option_cmake_enabled_local_infile">
           <code class="option">
            ENABLED_LOCAL_INFILE
           </code>
          </a>
          setting specified at MySQL build time.
         </p>
         <a class="indexterm" name="idm46045252534864">
         </a>
         <a class="indexterm" name="idm46045252533408">
         </a>
        </li>
        <li class="listitem">
         <p>
          By default, the client library in MySQL binary
                distributions is compiled with
          <a class="link" href="source-configuration-options.html#option_cmake_enabled_local_infile">
           <code class="option">
            ENABLED_LOCAL_INFILE
           </code>
          </a>
          disabled. If you compile MySQL from source, configure it
                with
          <a class="link" href="source-configuration-options.html#option_cmake_enabled_local_infile">
           <code class="option">
            ENABLED_LOCAL_INFILE
           </code>
          </a>
          disabled or enabled based on whether clients that make
                no explicit arrangements should have
          <code class="literal">
           LOCAL
          </code>
          capability disabled or enabled.
         </p>
        </li>
        <li class="listitem">
         <p>
          For client programs that use the C API, local data
                loading capability is determined by the default compiled
                into the MySQL client library. To enable or disable it
                explicitly, invoke the
          <a class="ulink" href="/doc/c-api/8.4/en/mysql-options.html" target="_top">
           <code class="literal">
            mysql_options()
           </code>
          </a>
          C API
                function to disable or enable the
          <code class="literal">
           MYSQL_OPT_LOCAL_INFILE
          </code>
          option. See
          <a class="ulink" href="/doc/c-api/8.4/en/mysql-options.html" target="_top">
           mysql_options()
          </a>
          .
         </p>
         <a class="indexterm" name="idm46045252524256">
         </a>
        </li>
        <li class="listitem">
         <p>
          For the
          <a class="link" href="mysql.html" title="6.5.1 mysql — The MySQL Command-Line Client">
           <span class="command">
            <strong>
             mysql
            </strong>
           </span>
          </a>
          client, local data
                loading capability is determined by the default compiled
                into the MySQL client library. To disable or enable it
                explicitly, use the
          <a class="link" href="mysql-command-options.html#option_mysql_local-infile">
           <code class="option">
            --local-infile=0
           </code>
          </a>
          or
          <a class="link" href="mysql-command-options.html#option_mysql_local-infile">
           <code class="option">
            --local-infile[=1]
           </code>
          </a>
          option.
         </p>
         <a class="indexterm" name="idm46045252518480">
         </a>
         <a class="indexterm" name="idm46045252516992">
         </a>
        </li>
        <li class="listitem">
         <p>
          For the
          <a class="link" href="mysqlimport.html" title="6.5.5 mysqlimport — A Data Import Program">
           <span class="command">
            <strong>
             mysqlimport
            </strong>
           </span>
          </a>
          client, local
                data loading is not used by default. To disable or
                enable it explicitly, use the
          <a class="link" href="mysqlimport.html#option_mysqlimport_local">
           <code class="option">
            --local=0
           </code>
          </a>
          or
          <a class="link" href="mysqlimport.html#option_mysqlimport_local">
           <code class="option">
            --local[=1]
           </code>
          </a>
          option.
         </p>
         <a class="indexterm" name="idm46045252511344">
         </a>
         <a class="indexterm" name="idm46045252509856">
         </a>
        </li>
        <li class="listitem">
         <p>
          If you use
          <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
           <code class="literal">
            LOAD DATA
                LOCAL
           </code>
          </a>
          in Perl scripts or other programs that
                read the
          <code class="literal">
           [client]
          </code>
          group from option
                files, you can add a
          <code class="literal">
           local-infile
          </code>
          option setting to that group. To prevent problems for
                programs that do not understand this option, specify it
                using the
          <a class="link" href="option-modifiers.html" title="6.2.2.4 Program Option Modifiers">
           <code class="literal">
            loose-
           </code>
          </a>
          prefix:
         </p>
         <div class="copytoclipboard-wrapper">
          <pre class="programlisting language-ini"><div class="docs-select-all right" id="sa4454218"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-ini"><span class="token selector">[client]</span>
<span class="token constant">loose-local-infile</span><span class="token attr-value"><span class="token punctuation">=</span>0</span></code></pre>
         </div>
         <p>
          or:
         </p>
         <div class="copytoclipboard-wrapper">
          <pre class="programlisting language-ini"><div class="docs-select-all right" id="sa12328480"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-ini"><span class="token selector">[client]</span>
<span class="token constant">loose-local-infile</span><span class="token attr-value"><span class="token punctuation">=</span>1</span></code></pre>
         </div>
        </li>
        <li class="listitem">
         <p>
          In all cases, successful use of a
          <code class="literal">
           LOCAL
          </code>
          load operation by a client also
                requires that the server permits local loading.
         </p>
        </li>
       </ul>
      </div>
     </li>
    </ul>
   </div>
   <p>
    If
    <code class="literal">
     LOCAL
    </code>
    capability is disabled, on either
        the server or client side, a client that attempts to issue a
    <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
     <code class="literal">
      LOAD DATA
        LOCAL
     </code>
    </a>
    statement receives the following error message:
   </p>
   <div class="copytoclipboard-wrapper">
    <pre class="programlisting language-none"><div class="docs-select-all right" id="sa33645788"><div class="copy-help left">Press ⌘+C to copy</div> <div class="right"><button class="clipboard-btn" title="Copy to Clipboard"><span class="icon-clipboard"></span></button></div></div><code class="language-none">ERROR 3950 (42000): Loading local data is disabled; this must be
enabled on both the client and server side</code></pre>
   </div>
   <a class="indexterm" name="idm46045252495328">
   </a>
   <a class="indexterm" name="idm46045252493760">
   </a>
  </div>
  <div class="simplesect">
   <div class="titlepage">
    <div>
     <div class="simple">
      <h4 class="title">
       <a name="load-data-local-permitted-files">
       </a>
       Restricting Files Permitted for Local Data Loading
      </h4>
     </div>
    </div>
   </div>
   <p>
    The MySQL client library enables client applications to restrict
        local data loading operations to files located in a designated
        directory. Certain MySQL client programs take advantage of this
        capability.
   </p>
   <p>
    Client programs that use the C API can control which files to
        permit for load data loading using the
    <code class="literal">
     MYSQL_OPT_LOCAL_INFILE
    </code>
    and
    <code class="literal">
     MYSQL_OPT_LOAD_DATA_LOCAL_DIR
    </code>
    options of the
    <a class="ulink" href="/doc/c-api/8.4/en/mysql-options.html" target="_top">
     <code class="literal">
      mysql_options()
     </code>
    </a>
    C API function
        (see
    <a class="ulink" href="/doc/c-api/8.4/en/mysql-options.html" target="_top">
     mysql_options()
    </a>
    ).
   </p>
   <a class="indexterm" name="idm46045252486304">
   </a>
   <a class="indexterm" name="idm46045252484816">
   </a>
   <p>
    The effect of
    <code class="literal">
     MYSQL_OPT_LOAD_DATA_LOCAL_DIR
    </code>
    depends on whether
    <code class="literal">
     LOCAL
    </code>
    data loading is
        enabled or disabled:
   </p>
   <div class="itemizedlist">
    <ul class="itemizedlist" style="list-style-type: disc; ">
     <li class="listitem">
      <p>
       If
       <code class="literal">
        LOCAL
       </code>
       data loading is enabled, either
            by default in the MySQL client library or by explicitly
            enabling
       <code class="literal">
        MYSQL_OPT_LOCAL_INFILE
       </code>
       , the
       <code class="literal">
        MYSQL_OPT_LOAD_DATA_LOCAL_DIR
       </code>
       option has
            no effect.
      </p>
     </li>
     <li class="listitem">
      <p>
       If
       <code class="literal">
        LOCAL
       </code>
       data loading is disabled, either
            by default in the MySQL client library or by explicitly
            disabling
       <code class="literal">
        MYSQL_OPT_LOCAL_INFILE
       </code>
       , the
       <code class="literal">
        MYSQL_OPT_LOAD_DATA_LOCAL_DIR
       </code>
       option can
            be used to designate a permitted directory for locally
            loaded files. In this case,
       <code class="literal">
        LOCAL
       </code>
       data
            loading is permitted but restricted to files located in the
            designated directory. Interpretation of the
       <code class="literal">
        MYSQL_OPT_LOAD_DATA_LOCAL_DIR
       </code>
       value is as
            follows:
      </p>
      <div class="itemizedlist">
       <ul class="itemizedlist" style="list-style-type: circle; ">
        <li class="listitem">
         <p>
          If the value is the null pointer (the default), it names
                no directory, with the result that no files are
                permitted for
          <code class="literal">
           LOCAL
          </code>
          data loading.
         </p>
        </li>
        <li class="listitem">
         <p>
          If the value is a directory path name,
          <code class="literal">
           LOCAL
          </code>
          data loading is permitted but
                restricted to files located in the named directory.
                Comparison of the directory path name and the path name
                of files to be loaded is case-sensitive regardless of
                the case sensitivity of the underlying file system.
         </p>
        </li>
       </ul>
      </div>
     </li>
    </ul>
   </div>
   <p>
    MySQL client programs use the preceding
    <a class="ulink" href="/doc/c-api/8.4/en/mysql-options.html" target="_top">
     <code class="literal">
      mysql_options()
     </code>
    </a>
    options as
        follows:
   </p>
   <div class="itemizedlist">
    <ul class="itemizedlist" style="list-style-type: disc; ">
     <li class="listitem">
      <p>
       The
       <a class="link" href="mysql.html" title="6.5.1 mysql — The MySQL Command-Line Client">
        <span class="command">
         <strong>
          mysql
         </strong>
        </span>
       </a>
       client has a
       <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
        <code class="option">
         --load-data-local-dir
        </code>
       </a>
       option
            that takes a directory path or an empty string.
       <a class="link" href="mysql.html" title="6.5.1 mysql — The MySQL Command-Line Client">
        <span class="command">
         <strong>
          mysql
         </strong>
        </span>
       </a>
       uses the option value to set the
       <code class="literal">
        MYSQL_OPT_LOAD_DATA_LOCAL_DIR
       </code>
       option
            (with an empty string setting the value to the null
            pointer). The effect of
       <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
        <code class="option">
         --load-data-local-dir
        </code>
       </a>
       depends
            on whether
       <code class="literal">
        LOCAL
       </code>
       data loading is enabled:
      </p>
      <a class="indexterm" name="idm46045252460384">
      </a>
      <a class="indexterm" name="idm46045252458880">
      </a>
      <div class="itemizedlist">
       <ul class="itemizedlist" style="list-style-type: circle; ">
        <li class="listitem">
         <p>
          If
          <code class="literal">
           LOCAL
          </code>
          data loading is enabled,
                either by default in the MySQL client library or by
                specifying
          <a class="link" href="mysql-command-options.html#option_mysql_local-infile">
           <code class="option">
            --local-infile[=1]
           </code>
          </a>
          , the
          <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
           <code class="option">
            --load-data-local-dir
           </code>
          </a>
          option is ignored.
         </p>
        </li>
        <li class="listitem">
         <p>
          If
          <code class="literal">
           LOCAL
          </code>
          data loading is disabled,
                either by default in the MySQL client library or by
                specifying
          <a class="link" href="mysql-command-options.html#option_mysql_local-infile">
           <code class="option">
            --local-infile=0
           </code>
          </a>
          , the
          <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
           <code class="option">
            --load-data-local-dir
           </code>
          </a>
          option applies.
         </p>
        </li>
       </ul>
      </div>
      <p>
       When
       <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
        <code class="option">
         --load-data-local-dir
        </code>
       </a>
       applies, the option value designates the directory in which
            local data files must be located. Comparison of the
            directory path name and the path name of files to be loaded
            is case-sensitive regardless of the case sensitivity of the
            underlying file system. If the option value is the empty
            string, it names no directory, with the result that no files
            are permitted for local data loading.
      </p>
     </li>
     <li class="listitem">
      <p>
       <a class="link" href="mysqlimport.html" title="6.5.5 mysqlimport — A Data Import Program">
        <span class="command">
         <strong>
          mysqlimport
         </strong>
        </span>
       </a>
       sets
       <code class="literal">
        MYSQL_OPT_LOAD_DATA_LOCAL_DIR
       </code>
       for each
            file that it processes so that the directory containing the
            file is the permitted local loading directory.
      </p>
     </li>
     <li class="listitem">
      <p>
       For data loading operations corresponding to
       <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
        <code class="literal">
         LOAD DATA
        </code>
       </a>
       statements,
       <a class="link" href="mysqlbinlog.html" title="6.6.9 mysqlbinlog — Utility for Processing Binary Log Files">
        <span class="command">
         <strong>
          mysqlbinlog
         </strong>
        </span>
       </a>
       extracts the files from the
            binary log events, writes them as temporary files to the
            local file system, and writes
       <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
        <code class="literal">
         LOAD DATA
            LOCAL
        </code>
       </a>
       statements to cause the files to be loaded.
            By default,
       <a class="link" href="mysqlbinlog.html" title="6.6.9 mysqlbinlog — Utility for Processing Binary Log Files">
        <span class="command">
         <strong>
          mysqlbinlog
         </strong>
        </span>
       </a>
       writes these
            temporary files to an operating system-specific directory.
            The
       <a class="link" href="mysqlbinlog.html#option_mysqlbinlog_local-load">
        <code class="option">
         --local-load
        </code>
       </a>
       option
            can be used to explicitly specify the directory where
       <a class="link" href="mysqlbinlog.html" title="6.6.9 mysqlbinlog — Utility for Processing Binary Log Files">
        <span class="command">
         <strong>
          mysqlbinlog
         </strong>
        </span>
       </a>
       should prepare local
            temporary files.
      </p>
      <a class="indexterm" name="idm46045252436512">
      </a>
      <a class="indexterm" name="idm46045252435024">
      </a>
      <p>
       Because other processes can write files to the default
            system-specific directory, it is advisable to specify the
       <a class="link" href="mysqlbinlog.html#option_mysqlbinlog_local-load">
        <code class="option">
         --local-load
        </code>
       </a>
       option to
       <a class="link" href="mysqlbinlog.html" title="6.6.9 mysqlbinlog — Utility for Processing Binary Log Files">
        <span class="command">
         <strong>
          mysqlbinlog
         </strong>
        </span>
       </a>
       to designate a different
            directory for data files, and then designate that same
            directory by specifying the
       <a class="link" href="mysql-command-options.html#option_mysql_load-data-local-dir">
        <code class="option">
         --load-data-local-dir
        </code>
       </a>
       option
            to
       <a class="link" href="mysql.html" title="6.5.1 mysql — The MySQL Command-Line Client">
        <span class="command">
         <strong>
          mysql
         </strong>
        </span>
       </a>
       when processing the output from
       <a class="link" href="mysqlbinlog.html" title="6.6.9 mysqlbinlog — Utility for Processing Binary Log Files">
        <span class="command">
         <strong>
          mysqlbinlog
         </strong>
        </span>
       </a>
       .
      </p>
     </li>
    </ul>
   </div>
  </div>
  <div class="simplesect">
   <div class="titlepage">
    <div>
     <div class="simple">
      <h4 class="title">
       <a name="load-data-local-shell">
       </a>
       MySQL Shell and Local Data Loading
      </h4>
     </div>
    </div>
   </div>
   <p>
    MySQL Shell provides a number of utilities to dump tables,
        schemas, or server instances and load them into other instances.
        When you use these utilities to handle the data, MySQL Shell
        provides additional functions such as input preprocessing,
        multithreaded parallel loading, file compression and
        decompression, and handling access to Oracle Cloud
        Infrastructure Object Storage buckets. To get the best
        functionality, always use the most recent version available of
        MySQL Shell's dump and dump loading utilities.
   </p>
   <p>
    MySQL Shell's data upload utilities use
    <a class="link" href="load-data.html" title="15.2.9 LOAD DATA Statement">
     <code class="literal">
      LOAD DATA LOCAL
        INFILE
     </code>
    </a>
    statements to upload data, so the
    <a class="link" href="server-system-variables.html#sysvar_local_infile">
     <code class="literal">
      local_infile
     </code>
    </a>
    system variable
        must be set to
    <code class="literal">
     ON
    </code>
    on the target server
        instance. You can do this before uploading the data, and remove
        it again afterwards. The utilities handle the file transfer
        requests safely to deal with the security considerations
        discussed in this topic.
   </p>
   <p>
    MySQL Shell includes these dump and dump loading utilities:
   </p>
   <div class="variablelist">
    <dl class="variablelist">
     <dt>
      <span class="term">
       Table export utility
       <code class="literal">
        util.exportTable()
       </code>
      </span>
     </dt>
     <dd>
      <p>
       Exports a MySQL relational table into a data file, which
              can be uploaded to a MySQL server instance using
              MySQL Shell's parallel table import utility, imported to
              a different application, or used as a logical backup. The
              utility has preset options and customization options to
              produce different output formats.
      </p>
     </dd>
     <dt>
      <span class="term">
       Parallel table import utility
       <code class="literal">
        util.importTable()
       </code>
      </span>
     </dt>
     <dd>
      <p>
       Imports a data file to a MySQL relational table. The data
              file can be the output from MySQL Shell's table export
              utility or another format supported by the utility's
              preset and customization options. The utility can carry
              out input preprocessing before adding the data to the
              table. It can accept multiple data files to merge into a
              single relational table, and automatically decompresses
              compressed files.
      </p>
     </dd>
     <dt>
      <span class="term">
       Instance dump utility
       <code class="literal">
        util.dumpInstance()
       </code>
       , schema dump utility
       <code class="literal">
        util.dumpSchemas()
       </code>
       , and table dump
            utility
       <code class="literal">
        util.dumpTables()
       </code>
      </span>
     </dt>
     <dd>
      <p>
       Export an instance, schema, or table to a set of dump
              files, which can then be uploaded to a MySQL instance
              using MySQL Shell's dump loading utility. The utilities
              provide Oracle Cloud Infrastructure Object Storage
              streaming, HeatWave Service compatibility checks and modifications,
              and the ability to carry out a dry run to identify issues
              before proceeding with the dump.
      </p>
     </dd>
     <dt>
      <span class="term">
       Dump loading utility
       <code class="literal">
        util.loadDump()
       </code>
      </span>
     </dt>
     <dd>
      <p>
       Import dump files created using MySQL Shell's instance,
              schema, or table dump utility into a HeatWave Service DB System or a
              MySQL Server instance. The utility manages the upload
              process and provides data streaming from remote storage,
              parallel loading of tables or table chunks, progress state
              tracking, resume and reset capability, and the option of
              concurrent loading while the dump is still taking place.
              MySQL Shell’s parallel table import utility can be used
              in combination with the dump loading utility to modify
              data before uploading it to the target MySQL instance.
      </p>
     </dd>
    </dl>
   </div>
   <p>
    For details of the utilities, see
    <a class="ulink" href="/doc/mysql-shell/8.4/en/mysql-shell-utilities.html" target="_top">
     MySQL Shell Utilities
    </a>
    .
   </p>
  </div>
 </div>
 <br/>
</div>
