
O cliente pede um número na hora, tipo quantos pedidos ficaram em processando no mês, e o servidor não tem phpMyAdmin nem Adminer. Com SSH e a pasta do WordPress já dá: o WP-CLI conversa com o banco usando as credenciais do wp-config.php, sem você digitar senha.
Entre na raiz da instalação e mande o SQL entre aspas. Confira o prefixo antes, porque nem toda instalação usa wp_. O --skip-column-names vai direto pro cliente mysql e tira o cabeçalho, útil quando a saída alimenta um script:
cd /var/www/seusite/html
sudo -u www-data wp db prefix
sudo -u www-data wp db query "SELECT post_status, COUNT(*) FROM wp_posts GROUP BY post_status;"
sudo -u www-data wp db query "SELECT option_name FROM wp_options WHERE autoload IN ('yes','on','auto-on','auto') ORDER BY LENGTH(option_value) DESC LIMIT 10;" --skip-column-names
sudo -u www-data wp db query < relatorio.sql Repare no IN da segunda consulta: até a 6.5 bastava autoload = 'yes', mas da 6.6 em diante o core grava também on, auto-on e auto na mesma coluna, e o filtro antigo esconde boa parte das opções do relatório.
Antes de puxar um dump de 4 GB pela rede, veja quem está ocupando espaço e corte as tabelas de log na exportação:
sudo -u www-data wp db size --tables --human-readable
sudo -u www-data wp db export dump-seusite.sql --exclude_tables=wp_actionscheduler_logs,wp_statistics_visitor O wp db query não é um cliente SQL próprio: ele lê DB_NAME, DB_USER, DB_PASSWORD e DB_HOST do wp-config.php e entrega a query pro binário de mysql ou mariadb que estiver no PATH. Daí a sintaxe do MySQL 8 valer inteira, e daí também o comando quebrar dizendo que não achou o executável quando o banco mora em outro host e ninguém instalou o cliente na máquina do site.
A regra que eu sigo em banco de produção: todo UPDATE nasce como SELECT com o mesmo WHERE, e todo DELETE nasce depois de um wp db export. O db query não tem dry-run nem pedido de confirmação, ele executa na hora.
Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…
Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…
O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…
O meta está no banco mas some do /wp-json/wp/v2/posts. Veja o register_post_meta certo, com single, type, schema de array e…
Escreva 31 de agosto de 2026 em PHP 8.3 sem aquele array com os doze meses, usando IntlDateFormatter com pattern…
Listagem de CPT com meta_query que demora segundos: veja o EXPLAIN da query do WP_Query e o índice composto em…