---
title: "Como corrigir o erro de permissão ao limpar o banco no WP-Optimize"
url: https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/
date: 2026-06-17
author: "Clayton Margiotti"
---

# Como corrigir o erro de permissão ao limpar o banco no WP-Optimize

## O que é o erro de permissão no banco do WP-Optimize?

O erro de permissão no banco do WP-Optimize é a falha em que a aba Optimizations executa cada operação, mas devolve uma mensagem de privilégio negado em vez de reduzir o overhead da tabela. O WP-Optimize não tem acesso próprio ao banco: ele roda as consultas pela conexão que o WordPress abre com o usuário e a senha definidos nas constantes DB_USER e DB_PASSWORD do wp-config.php. Quando uma otimização de tabela é disparada, o plugin envia o comando OPTIMIZE TABLE ao MySQL. Em tabelas InnoDB, esse comando é remapeado pelo servidor para um ALTER TABLE que recria a tabela inteira, e essa recriação exige os privilégios ALTER, INDEX, CREATE e DROP sobre o schema. Se o usuário do WordPress recebeu apenas SELECT, INSERT, UPDATE e DELETE, o servidor recusa a operação com um erro de comando negado, e a limpeza para naquele ponto.

## Como identificar

- A aba Optimizations mostra a mensagem "Optimizing the table ... failed" logo abaixo da operação, em vermelho, e o overhead da tabela continua igual ao anterior.

- O log do MySQL ou o WP_DEBUG registra o erro "OPTIMIZE command denied to user 'usuário'@'host' for table 'wp_options'" ou "ALTER command denied to user".

- Rodar wp db query "OPTIMIZE TABLE wp_postmeta;" pela linha de comando devolve "Access denied" em vez de uma tabela de status com Op optimize e Msg_text status OK.

- A coluna Status do relatório do WP-Optimize fica em "Table does not support optimize, doing recreate + analyze instead" e em seguida falha por falta de privilégio para recriar.

- Apenas a limpeza por DELETE de revisões e transients conclui, enquanto toda otimização que recria a tabela é marcada como falha, sinal de que faltam privilégios de DDL e não de leitura ou escrita.

**Antes de começar:** Antes de mexer em privilégios, exporte o banco com um dump completo para ter de onde restaurar. Conceda ALTER, CREATE e DROP só no schema do WordPress, no formato nome_do_banco.*, e nunca em escopo global com asterisco ponto asterisco, porque um usuário do site com DROP global pode apagar qualquer banco do servidor se a senha vazar.

## Como prevenir

- Ao criar a conta do banco para um site WordPress, conceda de uma vez SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, CREATE e DROP restritos ao schema do site, para a limpeza que recria tabela funcionar sem ajuste posterior

- Sempre limite o GRANT ao banco do WordPress no formato nome_do_banco.* em vez de escopo global, para reduzir o estrago caso a senha do usuário do site vaze

- Antes de migrar de hospedagem, anote os privilégios do usuário do banco de origem e replique exatamente no destino, porque painéis diferentes criam contas com privilégios mínimos distintos

- Confira se um plugin de segurança ou uma política do provedor não revoga ALTER e DROP do usuário do site de forma automática, o que silenciosamente quebra a otimização de tabela depois de já estar funcionando

Erros relacionados

- [Como corrigir a limpeza automática agendada que não roda no WP-Optimize](https://full.services/wp-fixer/corrigir-limpeza-agendada-wp-optimize/)

- [Como corrigir a remoção de revisões antigas que não funciona no WP-Optimize](https://full.services/wp-fixer/corrigir-revisoes-antigas-wp-optimize/)

- [Como corrigir a limpeza de transients que não funciona no WP-Optimize](https://full.services/wp-fixer/corrigir-transients-nao-limpa-wp-optimize/)

- [Como otimizar o banco de dados WordPress para velocidade](https://full.services/wp-fixer/otimizar-banco-dados-wordpress/)

- [Como limpar a tabela wp_options inchada (autoload)](https://full.services/wp-fixer/limpar-wp-options-autoload-wordpress/)


---

## Metadados Estruturados (Schema.org)

```json-ld
{
    "@context": "https://schema.org",
    "@graph": [
        {
            "@type": "Organization",
            "@id": "https://full.services/#org",
            "name": "FULL Services",
            "url": "https://full.services/",
            "sameAs": [
                "https://www.instagram.com/fullservicesbr",
                "https://www.facebook.com/fullservices.br",
                "https://www.linkedin.com/company/fullservicesbr/"
            ],
            "knowsAbout": [
                "WordPress",
                "WordPress Hosting",
                "Web Development",
                "Performance Optimization",
                "WordPress Security",
                "SEO para WordPress"
            ],
            "award": [
                "Gold Medal - The WP Weekly Awards 2023",
                "Gold Medal - The WP Weekly Awards 2024"
            ],
            "logo": {
                "@type": "ImageObject",
                "url": "https://full.services/wp-content/uploads/full-services-logo.png",
                "width": 200,
                "height": 60
            },
            "hasCredential": {
                "@type": "EducationalOccupationalCredential",
                "credentialCategory": "certification",
                "name": "CVE Numbering Authority (CNA)",
                "description": "Autoridade de numeração de vulnerabilidades (CVE) para o ecossistema WordPress, autorizada a atribuir IDs CVE. Válida desde 2022-05-03, com abrangência global.",
                "url": "https://www.cve.org/PartnerInformation/ListofPartners/partner/FULL",
                "recognizedBy": {
                    "@type": "Organization",
                    "name": "CISA — Cybersecurity and Infrastructure Security Agency",
                    "url": "https://www.cisa.gov/",
                    "sameAs": "https://www.cisa.gov/"
                }
            }
        },
        {
            "@type": "TechArticle",
            "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#article",
            "headline": "Como corrigir o erro de permissão ao limpar o banco no WP-Optimize",
            "url": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/",
            "inLanguage": "pt-BR",
            "datePublished": "2026-06-17T12:39:31-03:00",
            "dateModified": "2026-06-17T12:39:31-03:00",
            "author": {
                "@id": "https://full.services/#org"
            },
            "publisher": {
                "@id": "https://full.services/#org"
            },
            "isAccessibleForFree": false,
            "about": [
                {
                    "@type": "Thing",
                    "@id": "https://www.wikidata.org/wiki/Q13166",
                    "name": "WordPress",
                    "sameAs": "https://www.wikidata.org/wiki/Q13166",
                    "url": "https://wordpress.org/"
                },
                {
                    "@type": "Thing",
                    "name": "Performance &amp; Velocidade"
                }
            ],
            "mentions": {
                "@type": "Thing",
                "@id": "https://www.wikidata.org/wiki/Q13166",
                "name": "WordPress",
                "sameAs": "https://www.wikidata.org/wiki/Q13166",
                "url": "https://wordpress.org/"
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/"
            },
            "wordCount": 1059,
            "description": "O erro de permissão no banco do WP-Optimize trava a limpeza quando o usuário MySQL definido no wp-config.php não tem o privilégio que o comando OPTIMIZE TABLE exige para recriar a tabela. O plugin marca cada otimização como falha e o overhead não cai. A correção é conceder o GRANT correto ao usuário do banco.",
            "articleSection": "Performance &amp; Velocidade",
            "keywords": "wp-optimize command denied to user, wp-optimize erro de permissao no banco, wp-optimize falha ao limpar banco de dados, wp-optimize nao otimiza tabelas innodb, wp-optimize optimize table nao roda",
            "proficiencyLevel": "Advanced",
            "citation": {
                "@type": "CreativeWork",
                "url": "https://teamupdraft.com/documentation/wp-optimize/topics/database-optimization/faqs/why-dont-you-optimize-innodb-tables/",
                "name": "WP-Optimize — Why don't you optimize InnoDB Tables?"
            },
            "mainEntity": {
                "@type": "SoftwareSourceCode",
                "name": "Como corrigir o erro de permissão ao limpar o banco no WP-Optimize",
                "programmingLanguage": "SQL",
                "codeRepository": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/",
                "isAccessibleForFree": false
            }
        },
        {
            "@type": "FAQPage",
            "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq",
            "isPartOf": {
                "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#article"
            },
            "isAccessibleForFree": true,
            "mainEntity": [
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q1",
                    "name": "Por que o WP-Optimize falha com erro de permissão só na otimização de tabela?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Porque a limpeza de revisões e transients usa DELETE, que o usuário do site costuma ter, enquanto a otimização de tabela InnoDB é remapeada pelo MySQL para um ALTER TABLE que recria a tabela e exige ALTER, INDEX, CREATE e DROP. Se a conta tem só leitura e escrita, o servidor nega esse comando e a operação para.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q2",
                    "name": "Qual erro exato aparece quando falta privilégio no banco do WP-Optimize?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "No log do MySQL ou com o WP_DEBUG ligado aparece algo como OPTIMIZE command denied to user usuário arroba host for table wp_options, ou ALTER command denied to user. Esse texto confirma que a falha é de GRANT do usuário do banco, e não de configuração do plugin ou falta de espaço em disco.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q3",
                    "name": "Quais privilégios o usuário do banco precisa para o WP-Optimize otimizar tabelas?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Além de SELECT, INSERT, UPDATE e DELETE, o usuário precisa de ALTER, INDEX, CREATE e DROP no schema do WordPress. O OPTIMIZE TABLE em InnoDB recria a tabela inteira, e essa recriação só roda com esses quatro privilégios de DDL concedidos sobre o banco do site.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q4",
                    "name": "Por que a doc do WP-Optimize diz que tabelas InnoDB são recriadas?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Porque, conforme a doc oficial do plugin, o OPTIMIZE em InnoDB antes do MySQL 5.7 é ineficaz e na prática reconstrói a tabela inteira. Por isso o WP-Optimize parte para recriar mais analisar a tabela, e é justamente esse passo de recriação que exige o privilégio de DDL que muitas contas de hospedagem não têm.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q5",
                    "name": "Conceder DROP ao usuário do site é seguro?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "É seguro desde que o GRANT seja limitado ao schema do WordPress no formato nome_do_banco ponto asterisco, nunca em escopo global. Assim o usuário só pode recriar tabelas do próprio site. O risco real é conceder DROP em asterisco ponto asterisco, que permitiria apagar qualquer banco do servidor se a senha vazar.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q6",
                    "name": "Como confirmo que o problema é permissão e não outra falha do WP-Optimize?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Rode o comando isolado wp db query com OPTIMIZE TABLE numa tabela. Se voltar Access denied ou command denied to user, é permissão. Se voltar uma tabela de status com Msg_text como OK, o privilégio existe e a falha do plugin tem outra origem, como timeout ou tabela travada.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-permissao-limpeza-banco-wp-optimize/#faq-q7",
                    "name": "Preciso de acesso root ao MySQL para corrigir esse erro?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Você precisa de uma conta administrativa do banco, que pode ser a root via SSH ou a conta de admin do painel da hospedagem em ferramentas como o phpMyAdmin. Com ela você roda o GRANT que acrescenta os privilégios ao usuário do site. O próprio usuário do site não consegue conceder privilégios a si mesmo.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                }
            ]
        }
    ]
}
```
