Como configurar o MySQL no Google Compute Engine

Last reviewed 2021-11-23 UTC

Há várias opções para implantar o MySQL como parte de um projeto do Google Cloud. Você pode usar o Cloud SQL, o Google Cloud Marketplace ou instalar manualmente o MySQL no Compute Engine.

O Cloud SQLoferece o MySQL como um serviço da Web. Use o Cloud SQL para hospedar seu banco de dados MySQL na nuvem do Google e deixe que o Google Cloud cuide de tarefas administrativas como replicação, gerenciamento de patches e do banco de dados.

O Cloud Marketplace fornece uma interface click-to-deploy simples que facilita a instalação do MySQL em uma instância do Compute Engine. O Cloud Marketplace não inclui apenas uma instalação autônoma do MySQL, mas também várias pilhas de desenvolvimento da Web que usam o MySQL, incluindo pilhas LAMP e LEMP e clusters do Percona MySQL.

Caso prefira instalar e personalizá-lo manualmente, use o Compute Engine para criar um banco de dados MySQL em questão de minutos. Neste documento, você encontra orientações sobre a escolha dessas opções e os detalhes da instalação manual desse banco de dados no Compute Engine.

Como escolher a opção correta de implantação do MySQL

O Cloud SQL é uma ótima opção se você quiser a conveniência de ter o Google Cloud cuidando do processamento do banco de dados de back-end e da administração do servidor. Por exemplo, com o Cloud SQL, você tem backups automatizados e recuperação pontual. Além disso, os dados são replicados em várias zonas, o que proporciona maior disponibilidade e resiliência.

Talvez você prefira instalar o MySQL no Compute Engine, caso precise de um recurso não compatível com o Cloud SQL. Por exemplo, o Cloud SQL não tem suporte para funções definidas pelo usuário ou para o privilégio SUPER. Para mais informações, consulte as Perguntas frequentes do Cloud SQL.

Caso decida instalar o MySQL no Compute Engine, é possível usar o Cloud Marketplace para implantar uma instalação do MySQL ou instalá-lo manualmente em uma instância do Compute Engine. O Cloud Marketplace oferece uma maneira prática de implantar o MySQL como parte de pilhas de desenvolvimento maiores. O Cloud Marketplace fornece várias opções de instalação do MySQL, incluindo instalação autônoma do MySQL, pilhas LAMP, LEMP e Nginx, instalação de cluster do MySQL Percona e muitas outras.

Se as ofertas do Cloud Marketplace não atenderem às suas necessidades, instale manualmente o MySQL em uma instância do Compute Engine. É possível, por exemplo, implantar o MySQL em uma imagem personalizada que você criou ou controlar todo o processo de instalação.

Para instalar o MySQL manualmente em uma instância do Compute Engine, basta criar uma instância, e a instalação pode ser feita diretamente nela.

Para mais informações sobre cada opção, consulte os seguintes recursos:

Objetivos

  • Criar uma instância do Compute Engine.
  • Instalar o MySQL.
  • Conectar-se ao MySQL.

Pré-requisitos

  1. Crie um novo projeto no Console do Google Cloud. Também é possível usar um projeto atual, mas, se você criar um novo, a limpeza ficará mais fácil.

    Conclua todas as etapas deste documento usando o Console do Google Cloud. Se preferir usar a gcloud CLI, siga essas etapas para ativar a API Compute Engine e instalar a Google Cloud CLI.

  2. Use o Console do Google Cloud para ativar a API Compute Engine.

  3. Instale a CLI gcloud.

  4. Configure seu espaço de trabalho para tornar os comandos menos detalhados. Substitua os valores do seu projeto por PROJECT_ID, REGIONe ZONE nos comandos a seguir. Para ver a lista completa de zonas, consulte Regiões e zonas disponíveis.

    gcloud config set project PROJECT_ID
    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

Crie uma instância do Compute Engine

Crie uma instância do Compute Engine para MySQL e estabeleça uma conexão SSH para se conectar a ela. O sistema operacional padrão é o Debian versão 10. Se preferir usar um sistema operacional diferente neste tutorial, escolha uma das opções descritas na página de imagens públicas da documentação do Compute Engine.

Console

Para criar uma instância do Compute Engine no Console do Google Cloud:

  1. No console do Google Cloud, acesse a página Instâncias de VM do Compute Engine.

    Acesse as instâncias de VM do Compute Engine

  2. Selecione o projeto recém-criado e clique em Continuar.

  3. Clique em Criar instância ou Nova instância, caso você já tenha instâncias. Atribua o nome mysql-test a ela.

  4. Para especificar um sistema operacional diferente do padrão, na seção Disco de inicialização, clique em Alterar para configurar as propriedades do disco de inicialização. Na guia Imagens públicas, selecione um sistema operacional e clique em Salvar.

  5. Para estar em conformidade com as práticas recomendadas de segurança, crie a instância sem um endereço IP externo.

    Expanda Opções avançadas e expanda Rede. Em Interfaces de rede, expanda a interface padrão e, no menu Endereço IPv4 externo, selecione Nenhum.

  6. Clique em Criar.

Configurar e gerenciar a conversão de endereços de rede com o Cloud NAT

  1. No Console do Google Cloud, acesse a página do Cloud NAT.

    Acesse o Cloud NAT

  2. Clique em Primeiros passos ou Criar gateway Cloud NAT.

  3. Em Nome do gateway, digite nat-simple-configuration.

  4. Para a rede VPC do gateway NAT, escolha default.

  5. Em Região do gateway NAT, escolha a região que você escolheu acima.

  6. Em Cloud Router, selecione Criar novo roteador.

  7. Na caixa de diálogo, insira um Nome para o roteador, nat-router-simple-configuration, e clique em Criar.

  8. Clique em Configuração avançada.

  9. Em Stackdriver Logging, selecione Tradução e erros. Isso envia todos os registros para o Cloud Logging.

  10. Clique em Criar.

Para estabelecer uma conexão SSH, siga estas etapas:

  1. Na página Instâncias de VM, localize a nova instância na lista.

  2. Na coluna Conectar, clique em SSH. O terminal do SSH será aberto em uma janela do navegador.

gcloud

  1. Para criar uma instância do Compute Engine, use o comando gcloud compute instances create. Para especificar o sistema operacional, adicione o parâmetro --image-family seguido pela família de imagens ou o parâmetro --image seguido pelo nome de uma versão de imagem específica. Por exemplo, para usar a imagem mais recente da família Debian 10, adicione --image-family debian-10. Ao usar imagens públicas, o projeto de imagem precisa ser fornecido usando o parâmetro --image-project.

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. Criar um Cloud Router simples.

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. Configurar e gerenciar a conversão de endereços de rede com o Cloud NAT

    gcloud compute routers nats create nat-simple-configuration \
        --router=nat-router-simple-configuration \
        --auto-allocate-nat-external-ips \
        --nat-all-subnet-ip-ranges \
        --enable-logging
    
  4. Conecte-se à instância usando ssh.

    gcloud compute ssh \
        --tunnel-through-iap \
        mysql-test
    

    As conexões SSH são feitas usando o encaminhamento de TCP, que é processado pelo Identity-Aware Proxy (IAP).

Instalar o MySQL

As etapas a seguir descrevem como instalar o MySQL em uma instância do Compute Engine.

Debian 10+

Estas instruções instalam o MySQL 8 ou 5.7.

As versões 10 e posteriores do Debian contêm o MariaDB em vez do MySQL como parte do sistema de gerenciamento de pacotes. O MariaDB mantém a compatibilidade com o protocolo MySQL, mas tem um conjunto de recursos em evolução independente. Para mais detalhes, consulte MariaDB x MySQL.

Para instalar o MySQL, faça o download do pacote de versão e instale-o manualmente usando o comando dpkg.

  1. Instale a dependência wget.

    sudo apt-get install -y wget
    
  2. Faça o download do pacote de versão do MySQL Community Server.

    export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  3. Verifique a integridade do arquivo do pacote de versão.

    cat > ${DEB_FILE}.md5 << EOL
    799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. Depois de verificar o arquivo, adicione o pacote MySQL ao repositório de pacotes local.

    sudo dpkg -i ${DEB_FILE}
    

    Confirme as opções de instalação, incluindo a versão do MySQL.

  5. Com a opção do menu superior MySQL Server e Cluster selecionada, pressione Return e use as teclas de seta para escolher uma versão do servidor.

    Neste guia, você precisa escolher MySQL 8.0 ou 5.7. Pressione Return no teclado depois de selecionar a versão.

  6. Quando estiver tudo certo com as opções selecionadas no menu de configurações, use as teclas de seta para selecionar Ok no menu e pressione Return no teclado.

  7. Atualize o cache do pacote.

    sudo apt-get update
    

    Se você receber a mensagem de erro de GPG As seguintes assinaturas não foram verificadas porque a chave pública não está disponível: NO_PUBKEY 467B942D3A79BD29, importe as chaves de GPG ausentes com um que segue este padrão:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    Na mensagem de erro demonstrativa, a chave pública ausente é 467B942D3A79BD29. Forneça esse valor com a opção --recv-keys.

    Repita o comando para atualizar o cache do pacote.

  8. Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.

    sudo apt-get -y install mysql-community-server
    

    Você precisará fornecer alguns detalhes para a instalação, como a senha raiz.

Debian 9

Estas instruções instalam o MySQL 8 ou 5.7.

Por padrão, algumas versões do Debian, como o Debian 9, instalam o MariaDB como o servidor padrão do MySQL. O MariaDB foi projetado para ser amplamente compatível com o MySQL e pode ser invocado com os mesmos comandos. Para saber mais detalhes sobre as diferenças entre o MariaDB e o MySQL padrão, consulte Como passar do MySQL para o MariaDB no Debian 9.

Para instalar o MySQL, siga estas instruções:

  1. Faça o download do pacote de versão do MySQL Community Server.

    export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  2. Verifique a integridade do arquivo do pacote de versão.

    cat > ${DEB_FILE}.md5 << EOL
    9e393c991311ead61dcc8313aab8e230 ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. Depois de verificar o arquivo, adicione o pacote MySQL ao repositório de pacotes local.

    sudo dpkg -i ${DEB_FILE}
    

    Confirme as opções de instalação, incluindo a versão do MySQL.

  4. Com a opção do menu superior MySQL Server e Cluster selecionada, pressione Return e use as teclas de seta para escolher uma versão do servidor.

    Neste guia, você precisa escolher MySQL 8.0 ou 5.7. Pressione Return no teclado depois de selecionar a versão.

  5. Quando estiver tudo certo com as opções selecionadas no menu de configurações, use as teclas de seta para selecionar Ok no menu e pressione Return no teclado.

  6. Atualize o cache do pacote.

    sudo apt-get update
    

    Se você receber a mensagem de erro de GPG As seguintes assinaturas não foram verificadas porque a chave pública não está disponível: NO_PUBKEY 467B942D3A79BD29, importe as chaves de GPG ausentes com um que segue este padrão:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    Na mensagem de erro demonstrativa, a chave pública ausente é 467B942D3A79BD29. Forneça esse valor com a opção --recv-keys.

    Repita o comando para atualizar o cache do pacote.

  7. Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.

    sudo apt-get -y install mysql-community-server
    

Ubuntu

Para o Ubuntu 1804 e versões anteriores, estas instruções instalam o MySQL 5.7.
Para o Ubuntu 2004 e versões posteriores, estas instruções instalam o MySQL 8.

  1. Atualize o gerenciador de pacotes apt-get.

    sudo apt-get update
    
  2. Instale o MySQL. O processo de instalação inicia o serviço MySQL para você.

    sudo apt-get -y install mysql-server
    
  3. Por padrão, nas distribuições do Ubuntu, o MySQL autentica o usuário root com o plug-in auth_socket. Execute esta consulta para verificar a configuração padrão:

    echo "SELECT user, authentication_string, plugin, host
            FROM mysql.user WHERE user='root' ;" \
         | sudo mysql -t -u root
    

    A saída mostra que o usuário root que se conecta a partir de localhost usará o plug-in auth_socket:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. Altere essa configuração e a senha raiz para uma difícil de adivinhar:

    export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD"
    echo "ALTER USER 'root'@'localhost'
          IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \
          | sudo mysql -u root
    

    A saída contém a nova senha raiz:

    Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
    

CentOS ou RHEL 7

Estas instruções instalam o MySQL 8.

A versão 7 do CentOS e do RHEL contém MariaDB em vez de MySQL como parte do sistema de gerenciamento de pacotes. Para instalar o MySQL, atualize o gerenciador de pacotes.

  1. Faça o download do pacote de versão do MySQL Community Server.

    export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. Verifique a integridade do arquivo do pacote de versão.

    cat > ${RPM_FILE}.md5 << EOL
    8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. Atualize o gerenciador de pacotes para incluir o MySQL.

    sudo rpm -Uvh ${RPM_FILE}
    
  4. Instale o MySQL.

    sudo yum -y install mysql-community-server
    
  5. Inicie o servidor MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Consiga a senha raiz temporária nos registros do servidor

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Rocky Linux ou RHEL 8

Estas instruções instalam o MySQL 8.

A versão 8 do Rocky Linux, CentOS Stream e RHEL contém o MariaDB em vez do MySQL como parte do sistema de gerenciamento de pacotes. Para instalar o MySQL, atualize o gerenciador de pacotes.

  1. Faça o download do pacote de versão do MySQL Community Server.

    export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. Verifique a integridade do arquivo do pacote de versão.

    cat > ${RPM_FILE}.md5 << EOL
    0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    A autenticidade e a integridade do arquivo estarão verificadas se você vir a saída a seguir.

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. Atualize o gerenciador de pacotes para incluir o MySQL.

    sudo rpm -iUvh ${RPM_FILE}
    
  4. Instale o MySQL. Durante a instalação, desative o repositório do AppStream para que a instalação use o servidor da comunidade.

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. Inicie o servidor MySQL.

    sudo /usr/bin/systemctl start mysqld
    
  6. Consiga a senha raiz temporária nos registros do servidor

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Melhorar a segurança da instalação do MySQL

Para melhorar a segurança da instalação do MySQL, execute o comando mysql_secure_installation. Se você não tiver configurado uma senha durante o processo de instalação, crie uma nesta etapa. Para mais informações sobre esse comando, consulte a documentação do MySQL relativa a mysql_secure_installation.

sudo mysql_secure_installation

Conectar-se ao MySQL

As etapas a seguir descrevem como se conectar ao MySQL a partir da instância mysql-test.

MySQL 8.0

  1. Conecte-se ao MySQL usando o cliente do MySQL.

    sudo mysql -u root -p
    

    Quando você se conecta ao MySQL, o prompt muda para mysql>:

    Agora é possível executar os comandos do MySQL. Por exemplo, este comando mostra os threads em execução, inclusive a conexão atual:

    mysql> SHOW processlist;
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    | Id | User            | Host      | db   | Command | Time | State                  | Info             |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    |  5 | event_scheduler | localhost | NULL | Daemon  | 1889 | Waiting on empty queue | NULL             |
    | 14 | root            | localhost | NULL | Query   |    0 | init                   | show processlist |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    2 rows in set (0.00 sec)

    Use o comando a seguir para gerar uma lista de usuários.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +------------------+-----------+------------------------------------------------------------------------+
    | User             | Host      | authentication_string                                                  |
    +------------------+-----------+------------------------------------------------------------------------+
    | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | root             | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B            |
    +------------------+-----------+------------------------------------------------------------------------+
    4 rows in set (0.00 sec)
  2. Ao terminar de executar os comandos, use o comando exit para encerrar o cliente MySQL. Em seguida, use exit novamente para sair da instância do Compute Engine.

    mysql> exit
    Bye

MySQL 5.7

  1. Conecte-se ao MySQL usando o cliente do MySQL.

    sudo mysql -u root -p
    

    Quando você se conecta ao MySQL, o prompt muda para mysql>:

    Agora é possível executar os comandos do MySQL. Por exemplo, este comando mostra os threads em execução, inclusive a conexão atual:

    mysql> SHOW processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    | 51 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    1 row in set (0.00 sec)

    Use o comando a seguir para gerar uma lista de usuários.

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    
    +---------------+-----------+-------------------------------------------+
    | User          | Host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  2. Ao terminar de executar os comandos, use o comando exit para encerrar o cliente MySQL. Em seguida, use exit novamente para sair da instância do Compute Engine.

    mysql> exit
    Bye

Como fazer a limpeza

Depois de concluir o tutorial, limpe os recursos que você criou para que eles parem de usar a cota e incorrer em cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir instâncias

Para excluir uma instância do Compute Engine, faça o seguinte:

  1. No Console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Marque a caixa de seleção de a instância que você quer excluir.
  3. Para excluir a instância, clique em Mais ações, clique em Excluir e siga as instruções.

A seguir

Você aprendeu a instalar o servidor do MySQL no Compute Engine. Para conhecer aplicativos mais complexos que usam o MySQL, consulte a grande variedade de pilhas de desenvolvimento que usam esse banco de dados no Cloud Marketplace.

Caso seus requisitos incluam alta disponibilidade e dimensionalidade, instale o MySQL Cluster no Compute Engine. O MySQL Cluster fornece alta disponibilidade e escalonabilidade por meio de clustering sem compartilhamento e auto-fragmentação. O Cloud Marketplace oferece uma opção click-to-deploy para o Percona, uma solução de código aberto para clustering no MySQL.

Outra solução de código aberto para escalabilidade do MySQL é o Vitess, que veicula todo o tráfego de banco de dados do YouTube desde 2011. O Vitess é adequado para aplicativos que funcionam em contêineres. Para mais informações sobre como usar o Vitess em um ambiente em contêineres, consulte Como executar o Vitess no Kubernetes.

Para mais informações sobre o MySQL, consulte a documentação oficial do MySQL.

Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.