Página de download oficial: MySQL :: Download MySQL Community Server (Archived Versions)
Métodos de instalação do MySQL:
- Instalação offline do MySQL 5.7 em sistemas Linux-Generic
- Instalação offline do MySQL 5.7 em sistemas Red Hat Enterprise Linux/Oracle Linux
Diferenças entre Linux-Generic e Red Hat Enterprise Linux/Oracle Linux:
A principal diferença entre os pacotes de instalação "Linux-Generic" e "Red Hat Enterprise Linux/Oracle Linux" do MySQL é que o primeiro é um pacote de instalação genérico para distribuições Linux, enquanto o segundo é otimizado para distribuições Linux empresariais específicas.
Ao usar o pacote "Linux-Generic", você precisará gerenciar as dependências e configurações do sistema manualmente, possivelmente instalando bibliotecas adicionais. O pacote "Red Hat Enterprise Linux/Oracle Linux", por outro lado, utiliza o gerenciador de pacotes RPM para lidar automaticamenet com as dependências e pode vir pré-configurado com parâmetros otimizados, adequado para ambientes de produção empresariais.
1. Instalação offline do MySQL 5.7 em sistemas Linux-Generic
1.1. Download e upload do MySQL, geralmente no diretório /usr/local
# Descompactar o arquivo para /usr/local/
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# Renomear para mysql
mv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64/ /usr/local/mysql
1.2. Criação de grupo e usuário
# Criar grupo de usuários
groupadd bdmysql
# O parâmetro -r indica que o usuário bdmysql é um usuário do sistema, não pode ser usado para fazer login no sistema
useradd -r -g bdmysql bdmysql
1.3. Criação dos diretórios necessários
# Criar diretório de armazenamento de dados
mkdir /usr/local/mysql/data/
# Criar diretório de logs do banco
mkdir /usr/local/mysql/log/
# Criar diretório para arquivos temporários
mkdir /usr/local/mysql/tmp/
# Criar diretório de arquivos de execução
mkdir /usr/local/mysql/run/
# Criar log de erro de inicialização
touch /usr/local/mysql/log/mysqld_safe_error.log
# Criar destino padrão do log de erro
touch /usr/local/mysql/log/alert.log
# Criar arquivo de log de consultas lentas
touch /usr/local/mysql/log/slow.log
# Criar arquivo de log de consultas gerais
touch /usr/local/mysql/log/general.log
1.4. Configuração de permissões do diretório de dados MySQL
# Definir permissões para o diretório do MySQL
chown -R bdmysql:bdmysql /usr/local/mysql
1.5. Configuração do arquivo my.cnf
# Editar o arquivo de configuração
vim /etc/my.cnf
1.6. Substituir o conteúdo do my.cnf pelo seguinte
# Configuração lida pelo script mysqld_safe durante a inicialização
[mysqld_safe]
# Local do arquivo do pid do processo MySQL em segundo plano
pid-file=/usr/local/mysql/run/mysqld.pid
# Log de erro de inicialização
log-error=/usr/local/mysql/log/mysqld_safe_error.log
# Bloco de configuração para clientes MySQL locais
[mysql]
# Porta de conexão para cliente MySQL local
port=3306
# Informação de prompt da linha de comando do cliente MySQL
prompt=\\u@\\d \\r:\\m:\\s>
# Conjunto de caracteres padrão para cliente MySQL
default-character-set=utf8mb4
# Habilitar preenchimento automático de comandos
no-auto-rehash
# Bloco de configuração lido por todos os programas cliente MySQL
[client]
# Porta de conexão
port=3306
# Quando o host do servidor MySQL e o cliente estão no mesmo host, usa unix domain socket como protocolo de comunicação
socket=/usr/local/mysql/run/mysql.sock
# Arquivo de configuração para programas do servidor MySQL: mysqld, mysqld_safe e mysqld_multi
[mysqld]
# Gerar arquivo de despejo do core quando o processo falha, facilitando a depuração
core-file
# Especifica o caminho de instalação do MySQL
basedir=/usr/local/mysql
# Diretório onde os arquivos de dados do MySQL são armazenados
datadir=/usr/local/mysql/data
# Diretório temporário
tmpdir=/usr/local/mysql/tmp
# Configuração regional para mensagens de erro. O padrão é en_US.
lc_messages=pt_BR
# Diretório das mensagens de erro. O servidor usa este valor e lc_messages para localizar o arquivo de mensagens.
lc_messages_dir=/usr/local/mysql/share
# Destino padrão do log de erro. Se for o console, o valor é stderr. Caso contrário, é um arquivo.
log-error=/usr/local/mysql/log/alert.log
# Nome do arquivo de log de consultas lentas.
slow_query_log_file=/usr/local/mysql/log/slow.log
# Nome do arquivo de log de consultas gerais.
general_log_file=/usr/local/mysql/log/general.log
# Socket para comunicação quando servidor e cliente estão no mesmo host
socket=/usr/local/mysql/run/mysql.sock
# Conjunto de caracteres do servidor
character-set-server=utf8mb4
# Fuso horário para timestamps no log de erro e logs de consulta
log_timestamps=SYSTEM
# Número máximo de descritores de arquivo disponíveis no sistema para o mysqld
open_files_limit=61535
# Número máximo de conexões de cliente simultâneas permitidas
max_connections=1000
# Tamanho máximo de um pacote ou qualquer string gerada/intermediária enviada pela função mysql_stmt_send_long_data
max_allowed_packet=1G
# Se 0, nomes de tabela são armazenados como especificados e comparação diferencia maiúsculas/minúsculas
lower_case_table_names=1
# Habilita ou desabilita o log de consultas lentas
slow_query_log=1
# Método de carregamento do plugin validate_password
plugin-load-add=validate_password.so
# Controla a ativação do plugin validate-password na inicialização do servidor
validate-password=FORCE_PLUS_PERMANENT
1.7. Inicialização do banco de dados
/usr/local/mysql/bin/mysqld --initialize --user=bdmysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
1.8. Verificação da senha inicial do MySQL
# Verificar a senha temporária no log
grep -e 'temporary password' /usr/local/mysql/log/alert.log
1.9. Configuração para inicialização automática com o sistema
# Copiar o script de inicialização mysql.server para o diretório de inicialização do sistema /etc/init.d/ e renomear para mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
1.10. Inicialização do serviço MySQL
# Iniciar o serviço MySQL
service mysqld start
# Parar o serviço MySQL
service mysqld stop
# Reiniciar o serviço MySQL
service mysqld restart
# Verificar o status do serviço MySQL
service mysqld status
1.11. Conexão ao MySQL
# Acessar o diretório do MySQL
cd /usr/local/mysql
# Conectar ao MySQL
./bin/mysql -u root -p
1.12. Modificação da senha do root
# Alterar a senha do root (o ponto e vírgula no final do SQL é obrigatório)
ALTER USER 'root'@'localhost' IDENTIFIED BY '!SenhaSegura123';
# Atualizar as permissões
FLUSH PRIVILEGES;
1.13. Configuração para acesso remoto
# Selecionar o banco de dados mysql
USE mysql;
# Permitir que o acesse de qualquer host
UPDATE user SET host = '%' WHERE user = 'root';
# Atualizar as permissões
FLUSH PRIVILEGES;
1.14. Liberação da porta do MySQL no firewall
# Liberar porta TCP 3306 no firewall
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# Recarregar as regras do firewall
firewall-cmd --reload
1.15. Teste de conexão para verificar a instalação
1.16. Parada do serviço MySQL e desinstalação
# Parar o serviço MySQL
service mysqld stop
# Localizar todos os arquivos MySQL (este é um método para versões mais antigas)
find / -name mysql
# Resultado esperado:
/usr/local/mysql
/usr/local/mysql/bin/mysql
/usr/local/mysql/data/mysql
/usr/local/mysql/include/mysql
/usr/lib64/mysql
/var/lib/mysql
/var/lib/mysql/mysql
# Excluir os diretórios MySQL encontrados
rm -rf /usr/local/mysql
...
# MariaDB é um fork do MySQL e também precisa ser desinstalado
rpm -qa | grep mariadb
# Desinstalar o MariaDB
rpm -e --nodeps mariadb
1.17. Desinstalação concluída
2. Instalação offline do MySQL 5.7 em sistemas Red Hat Enterprise Linux/Oracle Linux
2.1. Download e upload do MySQL (pode ser em qualquer diretório)
2.2. Descompactação dos arquivos
# Descompactar o arquivo bundle
tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
2.3. Instalação dos pacotes
# Os pacotes possuem dependências, instalar na ordem correta
# Primeiro pacote - dependências comuns
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
# Segundo pacote - bibliotecas necessárias
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
# Terceiro pacote - cliente MySQL
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
# Quarto pacote - servidor MySQL
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
2.4. Inicialização do banco de dados
# Inicializar o banco de dados
mysqld --initialize
2.5. Configuração de permissões para usuário e grupo
# Definir permissões para o diretório de dados
chown -R bdmysql:bdmysql /var/lib/mysql
2.6. Inicialização e configuração para inicialização automática
# Iniciar o serviço MySQL
systemctl start mysqld
# Reiniciar o serviço MySQL
systemctl restart mysqld
# Parar o serviço MySQL
systemctl stop mysqld
# Configurar para iniciar automaticamente com o sistema
systemctl enable mysqld
2.7. Verificação da senha temporária
# Verificar a senha temporária no log do MySQL
cat /var/log/mysqld.log | grep localhost
2.8. Conexão ao banco de dados
2.9. Modificação da senha do root
# Alterar a senha do root (o ponto e vírgula no final do SQL é obrigatório)
ALTER USER 'root'@'localhost' IDENTIFIED BY '!SenhaSegura123';
# Atualizar as permissões
FLUSH PRIVILEGES;
2.10. Configuração para acesso remoto
# Selecionar o banco de dados mysql
USE mysql;
# Permitir que o root acesse de qualquer host
UPDATE user SET host = '%' WHERE user = 'root';
# Atualizar as permissões
FLUSH PRIVILEGES;
2.11. Teste de conexão para verificar a instalação
2.12. Desinstalação do MySQL
# Listar todos os pacotes MySQL instalados
rpm -qa | grep mysql
# Exemplo de saída:
mysql-community-libs-5.7.44-1.el7.x86_64
mysql-community-client-5.7.44-1.el7.x86_64
mysql-community-server-5.7.44-1.el7.x86_64
mysql-community-common-5.7.44-1.el7.x86_64
# Desinstalar os pacotes MySQL
yum remove mysql-community-libs-5.7.44-1.el7.x86_64
yum remove mysql-community-common-5.7.44-1.el7.x86_64
# Verificar se há arquivos residuais
find / -name mysql
# Exemplo de resultados:
/usr/local/mysql
/usr/share/mysql
/var/lib/mysql
/var/lib/mysql/mysql
# Remover os diretórios restantes
rm -rf /var/lib/mysql/*