Removes a grant from the MySQL server.

    CLI Example:

    .. code-block:: bash

        salt '*' mysql.grant_revoke \
            'SELECT,INSERT,UPDATE' 'database.*' 'frank' 'localhost'

def grant_revoke(grant,
                 database,
                 user,
                 host='localhost',
                 grant_option=False,
                 escape=True,
                 **connection_args):
    '''
    Removes a grant from the MySQL server.

    CLI Example:

    .. code-block:: bash

        salt '*' mysql.grant_revoke \
            'SELECT,INSERT,UPDATE' 'database.*' 'frank' 'localhost'
    '''
    dbc = _connect(**connection_args)
    if dbc is None:
        return False
    cur = dbc.cursor()

    grant = __grant_normalize(grant)

    if salt.utils.data.is_true(grant_option):
        grant += ', GRANT OPTION'

    db_part = database.rpartition('.')
    dbc = db_part[0]
    table = db_part[2]
    if dbc != '*':
        # _ and % are authorized on GRANT queries and should get escaped
        # on the db name, but only if not requesting a table level grant
        s_database = quote_identifier(dbc, for_grants=(table == '*'))
    if dbc == '*':
        # add revoke for *.*
        # before the modification query send to mysql will looks like
        # REVOKE SELECT ON `*`.* FROM %(user)s@%(host)s
        s_database = dbc
    if table != '*':
        table = quote_identifier(table)
    # identifiers cannot be used as values, same thing for grants
    qry = 'REVOKE {0} ON {1}.{2} FROM %(user)s@%(host)s;'.format(
        grant,
        s_database,
        table
    )
    args = {}
    args['user'] = user
    args['host'] = host

    try:
        _execute(cur, qry, args)
    except MySQLdb.OperationalError as exc:
        err = 'MySQL Error {0}: {1}'.format(*exc.args)
        __context__['mysql.error'] = err
        log.error(err)
        return False

    if not grant_exists(grant,
                        database,
                        user,
                        host,
                        grant_option,
                        escape,
                        **connection_args):
        log.info(
            'Grant \'%s\' on \'%s\' for user \'%s\' has been '
            'revoked', grant, database, user)
        return True

    log.info(
        'Grant \'%s\' on \'%s\' for user \'%s\' has NOT been '
        'revoked', grant, database, user)
    return False