Skip to main content

MySQL

# MySQL > Esta página aborda a conexão com MySQL como um *data warehouse*. Para usar o MySQL como *banco de dados da aplicação* do Analytics, veja [Configurando o banco de dados da aplicação do Analytics](../../installation-and-operation/configuring-application-database). Para adicionar uma conexão de banco de dados, clique no ícone de **engrenagem** no canto superior direito e navegue até **Configurações de administrador** > **Bancos de dados** > **Adicionar um banco de dados**. ## Versões suportadas O Analytics suporta desde a versão mais antiga suportada até a versão estável mais recente. Veja [datas de fim de suporte do MySQL](https://endoflife.software/applications/databases/mysql). ## Editar detalhes da conexão Você pode editar essas configurações a qualquer momento. Apenas lembre-se de salvar suas alterações. ### Nome para exibição Nome que será exibido para o banco de dados na interface do Analytics. ### Host O endereço IP do seu banco de dados, ou seu nome de domínio (exemplo: esc.mydatabase.com). ### Porta A porta do banco de dados. Exemplo: 3306. ### Nome de usuário O nome de usuário do banco de dados para a conta que você deseja usar para conectar ao banco. Você pode configurar múltiplas conexões para o mesmo banco de dados utilizando diferentes contas de usuário, cada uma com conjuntos distintos de [privilégios](../users-roles-privileges). ### Senha A senha do usuário que você utiliza para conectar ao banco de dados. ### Usar conexão segura (SSL) Você pode colar a cadeia de certificados SSL do seu servidor. ### Usar túnel SSH Consulte nosso [guia de tunelamento SSH](../ssh-tunnel). ### Desdobrar colunas JSON Para bancos de dados MySQL, o Analytics pode desdobrar colunas JSON em campos componentes para gerar uma tabela onde cada chave JSON se torna uma coluna. O desdobramento JSON está ativado por padrão, mas você pode desligá-lo se o desempenho for lento. Se ativar o desdobramento JSON, também pode ativar ou desativar o desdobramento para colunas individuais nas [metadados da tabela](../../data-modeling/metadata-editing#unfold-json). ### Opções adicionais para a string de conexão JDBC Você pode adicionar opções adicionais à string de conexão que o Analytics usa para conectar ao seu banco de dados. ### Reexecutar consultas para explorações simples Desative essa opção **se desejar que os usuários cliquem em** **Executar** (botão de play) antes de aplicar qualquer seleção de [Sumarizar](../../questions/query-builder/summarizing-and-grouping) ou filtro. Por padrão, o Analytics executará uma consulta assim que você escolher uma opção de agrupamento no menu **Sumarizar** ou uma condição de filtro no [menu de drill-through](../learn/analytics-basics/querying-and-dashboards/questions/drill-through). Se seu banco de dados for lento, você pode desativar a reexecução para evitar o carregamento dos dados a cada clique. ### Escolher quando sincronizações e varreduras acontecem Veja [sincronizações e varreduras](../sync-scan#choose-when-syncs-and-scans-happen). ### Refazer a impressão digital (fingerprint) das tabelas periodicamente > A impressão digital periódica aumentará a carga no seu banco de dados. Ative essa opção para que a cada sincronização o Analytics escaneie uma amostra dos valores. Uma consulta de fingerprint analisa as primeiras 10.000 linhas de cada coluna e utiliza esses dados para estimar quantos valores únicos aquela coluna possui, o valor mínimo e máximo para colunas numéricas e de timestamp, entre outras informações. Se deixar essa opção desligada, o Analytics fará essa análise apenas uma vez, durante a configuração inicial. ## Conectando a servidores MySQL 8+ O Analytics usa o conector MariaDB para conectar a servidores MySQL. O conector MariaDB não suporta o plugin de autenticação padrão do MySQL 8. Para conectar, será necessário alterar o plugin usado pelo usuário Analytics: ```sql ALTER USER 'analytics'@'%' IDENTIFIED WITH mysql_native_password BY 'sua_senha'; ``` ## Incapaz de fazer login com as credenciais corretas **Como detectar isso:** O Analytics falha ao conectar ao servidor MySQL com a mensagem de erro “Parece que o nome de usuário ou a senha estão incorretos”, mesmo que você tenha certeza que as credenciais estão corretas. Isso pode acontecer se o usuário MySQL foi criado com um host permitido diferente do host de conexão. Por exemplo, se o servidor MySQL estiver rodando em um container Docker, e o usuário `analytics` foi criado com: ```sql CREATE USER 'analytics'@'localhost' IDENTIFIED BY 'sua_senha'; ``` o `localhost` será interpretado como o Docker container, e não a máquina host, causando a negação do acesso. Você pode identificar esse problema olhando os logs do servidor do Analytics para a mensagem de erro: ``` Access denied for user 'analytics'@'172.17.0.1' (using password: YES). ``` Note o IP do host `172.17.0.1` (no caso um IP da rede Docker) e o trecho `using password: YES`. Você verá o mesmo erro ao tentar conectar no MySQL via cliente de linha de comando: ```bash mysql -h 127.0.0.1 -u analytics -p ``` **Como corrigir:** Recrie o usuário MySQL com o nome do host correto: ```sql CREATE USER 'analytics'@'172.17.0.1' IDENTIFIED BY 'sua_senha'; ``` Ou, se preferir, use um wildcard para o nome do host: ```sql CREATE USER 'analytics'@'%' IDENTIFIED BY 'sua_senha'; ``` Então, conceda os privilégios para esse usuário: ```sql GRANT SELECT ON database_destino.* TO 'analytics'@'172.17.0.1'; FLUSH PRIVILEGES; ``` Lembre-se de remover o usuário antigo: ```sql DROP USER 'analytics'@'localhost'; ``` Se não conseguir conectar, mas o usuário, host e senha estiverem corretos, experimente adicionar `trustServerCertificate=true` nas opções adicionais do JDBC. Essa opção indica para o driver do Analytics confiar no certificado do servidor mesmo sem um certificado raiz, permitindo estabelecer uma conexão segura. ## Sincronizando registros que incluem JSON **O Analytics inferirá o “schema” JSON com base nas chaves nos primeiros quinhentos registros da tabela.** Campos JSON no MySQL não possuem schema definido, então o Analytics não pode depender dos metadados da tabela para descobrir quais chaves existem em um campo JSON. Para contornar essa limitação, o Analytics pega os primeiros quinhentos registros e faz o parsing do JSON para inferir o schema. O limite de quinhentos registros é para evitar sobrecarga desnecessária no banco durante a sincronização de metadados. O problema ocorre quando as chaves variam entre os registros: os primeiros quinhentos registros podem não conter todas as chaves possíveis. Para garantir que todas as chaves sejam inferidas, você precisará adicionar as chaves adicionais nos primeiros quinhentos registros. ## Criando um container Docker do MySQL 8+ Se você estiver criando um novo container MySQL, e: - deseja que o Analytics conecte ao container sem precisar criar o usuário manualmente ou alterar o mecanismo de autenticação, - ou está enfrentando o erro `RSA public key is not available client side (option serverRsaPublicKeyFile not set)`, use o modificador `['--default-authentication-plugin=mysql_native_password']` ao rodar o container, conforme os exemplos abaixo: - Docker run simples: ```bash docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx mysql:8.xx.xx --default-authentication-plugin=mysql_native_password ``` - Ou no docker-compose: ```yaml mysql: image: mysql:8.xx.xx container_name: mysql hostname: mysql ports: - 3306:3306 environment: - "MYSQL_ROOT_PASSWORD=xxxxxx" - "MYSQL_USER=analytics" - "MYSQL_PASSWORD=xxxxxx" - "MYSQL_DATABASE=analytics" volumes: - $PWD/mysql:/var/lib/mysql command: ["--default-authentication-plugin=mysql_native_password"] ``` ## Limitações com bancos baseados em Vitess - Ao consultar bancos Vitess (como Planetscale), você deve adicionar uma cláusula `LIMIT` em cada subconsulta. O motivo: normalmente, o Analytics aplica limites (ex: 2000 ou 10000 linhas) no resultado final da consulta. Porém, devido a um bug conhecido no Vitess, o limite pode ser aplicado nas subconsultas, gerando resultados inesperados (por exemplo, nem todas as linhas aparecem no Analytics). O workaround é adicionar limites em cada subconsulta. - Consulte o fornecedor do serviço, pois Vitess pode apresentar problemas ao retornar metadados do information schema. O Analytics precisa desses metadados para popular seu banco de dados da aplicação; se o Analytics não conseguir esses metadados, campos podem não aparecer ou aparecer vazios. ## Recursos de modelo Escolha se deseja ativar recursos relacionados a [modelos do Analytics](../../data-modeling/models). Geralmente, esses recursos exigirão que o usuário de conexão ao banco tenha permissões de leitura e escrita. ### Ações do modelo Ative essa configuração para permitir que [ações](../../actions/introduction) criadas a partir de modelos sejam executadas. Ações podem ler, escrever e possivelmente deletar dados. Seu usuário de banco precisará ter permissões de escrita. ### Persistência do modelo O Analytics criará tabelas com os dados do modelo e as atualizará conforme um agendamento definido. Para habilitar a [persistência do modelo](../../data-modeling/model-persistence), você precisa conceder à credencial dessa conexão permissões de leitura e escrita em um schema fornecido pelo Analytics. ## Roteamento de banco de dados Veja [Roteamento de banco de dados](../../permissions/database-routing). ## Zona de perigo Veja [Zona de perigo](../danger-zone). ## Leitura adicional - [MariaDB](./mariadb) - [Gerenciando bancos de dados](../../databases/connecting) - [Edição de metadados](../../data-modeling/metadata-editing) - [Modelos](../../data-modeling/models) - [Definindo permissões de acesso a dados](../../permissions/data)

Leia a documentação para outras versões do Analytics.