<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h4 class="title">
      <a name="firewall-elements">
      </a>
      8.4.7.1 Elements of MySQL Enterprise Firewall
     </h4>
    </div>
   </div>
  </div>
  <p>
   MySQL Enterprise Firewall is based on a plugin library that includes these
        elements:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      A server-side plugin named
      <code class="literal">
       MYSQL_FIREWALL
      </code>
      examines SQL statements before they execute and, based on
            the registered firewall profiles, renders a decision whether
            to execute or reject each statement.
     </p>
    </li>
    <li class="listitem">
     <p>
      The
      <code class="literal">
       MYSQL_FIREWALL
      </code>
      plugin, along with
            server-side plugins named
      <code class="literal">
       MYSQL_FIREWALL_USERS
      </code>
      and
      <code class="literal">
       MYSQL_FIREWALL_WHITELIST
      </code>
      implement
            Performance Schema and
      <code class="literal">
       INFORMATION_SCHEMA
      </code>
      tables that provide views into the registered profiles.
     </p>
    </li>
    <li class="listitem">
     <p>
      Profiles are cached in memory for better performance. Tables
            in the firewall database provide backing storage of firewall
            data for persistence of profiles across server restarts. The
            firewall database can be the
      <code class="literal">
       mysql
      </code>
      system
            database or a custom schema (see
      <a class="xref" href="firewall-installation.html#firewall-install" title="Installing MySQL Enterprise Firewall">
       Installing MySQL Enterprise Firewall
      </a>
      ).
     </p>
    </li>
    <li class="listitem">
     <p>
      Stored procedures perform tasks such as registering firewall
            profiles, establishing their operational mode, and managing
            transfer of firewall data between the cache and persistent
            storage.
     </p>
    </li>
    <li class="listitem">
     <p>
      Administrative functions provide an API for lower-level
            tasks such as synchronizing the cache with persistent
            storage.
     </p>
    </li>
    <li class="listitem">
     <p>
      System variables enable firewall configuration and status
            variables provide runtime operational information.
     </p>
    </li>
    <li class="listitem">
     <p>
      The
      <a class="link" href="privileges-provided.html#priv_firewall-admin">
       <code class="literal">
        FIREWALL_ADMIN
       </code>
      </a>
      and
      <a class="link" href="privileges-provided.html#priv_firewall-user">
       <code class="literal">
        FIREWALL_USER
       </code>
      </a>
      privileges
            enable users to administer firewall rules for any user, and
            their own firewall rules, respectively.
     </p>
    </li>
    <li class="listitem">
     <p>
      The
      <a class="link" href="privileges-provided.html#priv_firewall-exempt">
       <code class="literal">
        FIREWALL_EXEMPT
       </code>
      </a>
      privilege
            exempts a user from firewall restrictions. This is useful,
            for example, for any database administrator who configures
            the firewall, to avoid the possibility of a misconfiguration
            causing even the administrator to be locked out and unable
            to execute statements.
     </p>
    </li>
   </ul>
  </div>
 </div>
 <br/>
</div>
