21 fevereiro 2016

Instalação MySQL 5.7 no Ubuntu 15.10


Ubuntu é hoje uma das distribuições Linux mais populares, principalmente pela facilidade de instalação e configuração. O MySQL 5.7 oferece novos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no Ubuntu 15.10.


Nota: usei o Ubuntu em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalados, basta executar:
shell> vagrant init boxcutter/ubuntu1510
shell> vagrant up --provider virtualbox


3 opções de instalação

Temos 3 opções para prosseguir com a instalação:
  1. usar o APT como gerenciador de pacotes (recomendado)
  2. usar binários pré-compilados (mais flexível, permite por exemplo mudar o diretório de instalação)
  3. compilar seus próprios binários (avançado)
A seguir estão os passos para opções 1 e 2.
Nota: se você tiver alguma instalação anterior de MySQL, faça backup antes de realizar qualquer procedimento.

Versão mais atualizada do MySQL

A maneira mais fácil de instalar o MySQL no Ubuntu é utilizar o gerenciador de pacotes APT. Porém, o repositório APT padrão do Ubuntu não possui as versões mais atuais do MySQL e é necessário instalar o repositório oficial do MySQL.
Para confirmar a versão do MySQL disponível no seu repositório APT padrão, execute:
shell> sudo apt-get update
shell> sudo apt-get -s install mysql-server
A opção -s do comando acima apenas simula uma instalação e de fato não altera nada.
No momento que escrevo este tutorial, a versão mais atual do MySQL disponível no repositório padrão do Ubuntu é a 5.6, que não é a mais atual. Contudo, é muito simples configurar o Ubuntu para utilizar o repositório oficial MySQL e manter as versões mais atualizadas. Veremos a seguir.


Instalação do repositório oficial MySQL

  1. Baixe o repositório APT para MySQL em http://dev.mysql.com/downloads/repo/apt. É o mesmo pacote tanto para Debian, quanto para Ubuntu. No meu caso, baixei para o diretório /home/vagrant/downloads. Dica: na tela de login, veja o link em “No thanks, just start my download”;
  2. Instale o repositório APT com o comando:
    shell> cd /home/vagrant/downloads
    shell> sudo dpkg -i mysql-apt-config*.deb
    Após executar o comando, você terá a liberdade de escolher qual versão do MySQL vai usar e se vai querer outros componentes, como conectores ou ferramentas. Neste tutorial escolheremos a versão 5.7.
  3. (Opcional) Remova o arquivo do repositório que acabou de baixar:
    shell> rm mysql-apt-config*.deb
  4. (Opcional) Verifique que agora temos o MySQL 5.7 disponível para instalação:
    shell> sudo apt-get update
    shell> sudo apt-get -s install mysql-server


Instalação do MySQL via APT

Uma vez que o repositório oficial MySQL esteja configurado (veja seção anterior), para instalar o MySQL 5.7 basta executar:
  1. shell> sudo apt-get update
    shell> sudo apt-get install mysql-server
    No processo de instalação, será solicitada a criação da senha do usuário root do MySQL. Senhas devem conter pelo menos 1 caractere numérico, uma minúscula e letra maiúscula e 1 caractere especial (não alfanumérico).
  2. (Opcional) Veja se o servidor MySQL foi inicializado com:
    shell> sudo service mysql status
  3. (Opcional) Veja o que foi instalado com:
    dpkg -l | grep mysql | grep ii


Instalação do MySQL “na unha” via binários pré-compilados

Esta opção de instalação é mais trabalhosa, pois não utiliza o gerenciador de pacotes APT, porém dá mais flexibilidade. Por exemplo: permite escolher quais diretórios serão utilizados pelo MySQL, executar múltiplas instâncias, etc.
  1. Como pré-requisito, certifique-se que a dependência libaio está presente:
    shell> ldconfig -p | grep libaio
    libaio.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libaio.so.1
    Veja que a libaio está presente. Caso não tenha a libaio, instale com:
    shell> apt-get install libaio1
  2. Baixe os binários em dev.mysql.com, selecione “Linux - Generic” como plataforma. No meu caso, baixei para o diretório /home/vagrant/downloads. Dica: na tela de login, veja o link em “No thanks, just start my download”;
  3. Remova qualquer instalação prévia ou variante de MySQL com:
    shell> sudo dpkg -P mysql
  4. Executar a seguinte sequência de comandos no shell:
    sudo groupadd mysql
    sudo useradd -r -g mysql -s /bin/false mysql
    cd /home/vagrant
    tar zxvf /home/vagrant/downloads/mysql-5.7*.tar.gz
    ln -s mysql-5.7* mysql
    cd mysql
    mkdir mysql-files
    chmod 750 mysql-files
    sudo chown -R mysql .
    sudo chgrp -R mysql .
    sudo bin/mysqld --initialize --user=mysql --log-error=/tmp/mysqld.log --datadir=/home/vagrant/mysql/data
    sudo cat /tmp/mysqld.log
  5. Se tudo correu bem até aqui, o diretório de dados foi criado e uma senha temporária atribuída ao usuário root do MySQL:
    shell> sudo cat /tmp/mysqld.log
    [Note] A temporary password is generated for root@localhost: xxxxxxxxxxxx
  6. Continue com o procedimento de pós-instalação com os seguintes comandos:
    sudo bin/mysql_ssl_rsa_setup --datadir=/home/vagrant/mysql/data
    sudo chown -R root .
    sudo chown -R mysql data mysql-files
  7. Neste ponto o MySQL já está pronto para rodar. Para iniciar o processo mysqld (server):
    shell> sudo bin/mysqld_safe --user=mysql &
    (pressione Enter 2 vezes)
  8. Conecte-se com o MySQL com:
    shell> bin/mysql -uroot -p'xxxxxxxxxxxx'
  9. Na versão 5.7, é obrigatório trocar a senha na primeira conexão. Veja o exemplo para a nova senha “Root123!”:
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123!';
    mysql> quit
  10. (Opcional) Depois que tudo estiver funcionando, remova o arquivo de instalação:
    rm /usr/local/downloads/mysql-5.7*.tar.gz


Observações:
  • É usual manter um arquivo /etc/my.cnf para alterar as configurações padrão do MySQL. Você pode copiá-lo do template:
    sudo cp support-files/my-default.cnf /etc/my.cnf
    sudo chown root:sys /etc/my.cnf
    sudo chmod 644 /etc/my.cnf
  • Neste tipo de instalação manual, o MySQL não é inicializado no boot. Para inicializar manualmente:
    shell> sudo /home/vagrant/mysql/bin/mysqld_safe --user=mysql &
  • Para finalizar o processo mysqld, ao invés de forçar um kill, prefira usar:
    shell> /home/vagrant/mysql/bin/mysqladmin -uroot -p shutdown
  • Adicione os executaveis do MySQL no PATH do seu usuário:
    echo 'PATH="$HOME/mysql/bin:$PATH"' >> ~/.profile
    source ~/.profile


Para saber mais detalhes como remover o MySQL ou mudar a versão major, consulte os links nas referências abaixo. Deixe seu comentário caso algo não funcione ou se tiver alguma sugestão.

Referências


11 fevereiro 2016

Instalação MySQL 5.7 no FreeBSD 11

O FreeBSD é o sistema operacional UNIX-like que sempre foi sinônimo de estabilidade e segurança. O MySQL 5.7 possui muitos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no FreeBSD 11.


Nota: usei o FreeBSD em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalar o Vagrant e Virtual Box, criei um Vagrantfile no editor de textos com o conteúdo abaixo:
Vagrant.configure("2") do |config|
 config.vm.guest = :freebsd
 config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
 config.vm.box = "freebsd/FreeBSD-11.0-CURRENT"
 config.ssh.shell = "sh"
 config.vm.base_mac = "080027D14C66"

 config.vm.provider :virtualbox do |vb|
   vb.customize ["modifyvm", :id, "--memory", "2048"]
   vb.customize ["modifyvm", :id, "--cpus", "2"]
   vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
   vb.customize ["modifyvm", :id, "--audio", "none"]
   vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
   vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
 end
end
Depois, no mesmo diretório do Vagrantfile, executei:
shell> vagrant up --provider virtualbox

Opções de instalação

Temos 4 opções de instalação no FreeBSD:
  1. usar o gerenciador de pacotes pkg (recomendado, não requer compilação)
  2. usar os ports disponibilizados em http://www.freebsd.org (pouco mais demorado, requer compilação)
  3. usar binários pré-compilados disponibilizados pela Oracle (apenas para obter versão mais recente do MySQL, não requer compilação)
  4. compilar seus próprios binários (mais flexível, porém requer bastante esforço)
A comunidade do FreeBSD faz um ótimo trabalho disponibilizando muito rapidamente os pacotes e ports com as releases mais atuais do MySQL. No momento de escrita deste artigo, os pacotes e ports para MySQL 5.7 estão apenas uma release atrás da mais recente disponibilizada pela Oracle. Usar pacotes ou ports (opções 1 e 2) nos dá vários benefícios:
  • ter um MySQL funcional e com otimizações específicas conhecidas para sua versão do FreeBSD devidamente habilitadas;
  • configuração e build automáticos;
  • scripts de inicialização instalados em /usr/local/etc/rc.d;
  • poder usar pkg_info -L para ver quais arquivos estão instalados;
  • poder usar pkg_delete para remover o MySQL se você não o quiser mais em sua máquina.
Por esses motivos, vamos explorar a seguir os passos para instalação via pacotes (opção 1) e via ports mysql-server e mysql-client (opção 2).

Instalação via pacotes pkg do FreeBSD

  1. Para o procedimento abaixo funcionar, esteja logado como root, se necessário execute:
    shell> sudo -i
  2. Garanta um ports tree atualizado:
    shell> portsnap fetch update
  3. Compile e instale o MySQL:
    shell> pkg install mysql57-server
  4. (Opcional) Se tudo correu bem até aqui, MySQL Server e Client foram instalados. Confirme com:
    shell> mysql -V
  5. Habilite o MySQL como serviço e inicialize:
    shell> echo 'mysql_enable="YES"' >> /etc/rc.conf
    shell> service mysqld-start
  6. (Opcional) Confirme se o mysqld está em execução com:
    shell> ps -auxww | grep mysqld
  7. Neste ponto, o diretório de dados (datadir) foi criado e uma senha temporária atribuída ao usuário root do MySQL:
    shell> ls /var/db/mysql
    shell> cat /root/.mysql_secret
    # Password set for user 'root@localhost' at … xxxxxxxxxxxx
  8. Conecte-se com o MySQL e troque a senha para, por exemplo, “Root123!”:
    shell> mysql -uroot -p'xxxxxxxxxxxx'
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123!';
    mysql> quit

Instalação via ports do FreeBSD

Observe que este método é mais demorado que o anterior. Use-o apenas se tiver necessidades específicas de customização da build. Se você quiser mais controle sobre as opções de compilação dos pacotes que serão instalados, remova o parâmetro -DBATCH dos comandos make abaixo.
  1. Para o procedimento abaixo funcionar, esteja logado como root, se necessário execute:
    shell> sudo -i
  2. Verifique se o GNU make (gmake) está disponível. Se o resultado do comando gmake -v for Command not found, você deve instalá-lo com os comandos:
    shell> portsnap fetch extract
    shell> cd /usr/ports/devel/gmake
    shell> make -DBATCH install clean
  3. Garanta um ports tree atualizado:
    shell> portsnap fetch update
  4. Compile e instale o MySQL:
    shell> cd /usr/ports/databases/mysql57-server
    shell> make -DBATCH install clean
  5. Os demais passos são idênticos ao método anterior (instalação via pacotes pkg). Execute os mesmos passos a partir do #4 (comando mysql -V em diante).

Se algo não funcionou ou se tiver alguma sugestão deixe seu comentário.

Referências