Instalação e Desinstalação Detalhada do MySQL no Linux

Página de download oficial: MySQL :: Download MySQL Community Server (Archived Versions)

Métodos de instalação do MySQL:

  1. Instalação offline do MySQL 5.7 em sistemas Linux-Generic
  2. 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/*

2.13. Desinstalação concluída

Tags: MySQL Linux banco de dados Instalação Red Hat

Publicado em 6-3 08:00 por Thomas