Este guia detalha o processo de instalação do MySQL 8.0 em um sistema CentOS utilizando o pacote binário tar.gz. O foco está na configuração manual de diretórios, permissões e ajustes críticos no arquivo de inicialização, especialmente em relação à sensibilidade a maiúsculas e minúsculas.
1. Verificação de Conflitos e Instalação de Dependências
Primeiro, verifique se o MariaDB está instalado no sistema, pois pode causar conflitos com o MySQL.
rpm -qa | grep -i mariadb
Caso seja encontrado, remova-o completamente para evitar problemas de dependência:
rpm -e --nodeps mariadb-libs-*
Em seguida, instale a biblioteca assíncrona de I/O necessária para o funcionamento do banco de dados:
yum install -y libaio
2. Preparação do Sistema de Arquivos e Usuário
Crie a estrutura de diretórios para os binários e os dados do banco de dados. Neste exemplo, utilizaremos /opt/mysql como base.
mkdir -p /opt/mysql/binaries
mkdir -p /opt/mysql/data
Crie o grupo e o usuário dedicado para a execução do serviço, restringindo o login do shell:
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
Aplique as permissões de propriedade para o novo usuário:
chown -R mysql:mysql /opt/mysql
chmod -R 750 /opt/mysql
3. Extração do Pacote Binário
Após baixar o arquivo mysql-8.0.22-el7-x86_64.tar.gz do site oficial, extraia-o e mova os conteúdos para o diretório de binários:
cd /opt/mysql
tar -zxvf mysql-8.0.22-el7-x86_64.tar.gz
mv mysql-8.0.22-el7-x86_64/* binaries/
rm -rf mysql-8.0.22-el7-x86_64
4. Configuração do Arquivo my.cnf
Crie o arquivo de configuração global. É crucial garantir que os caminhos e as configurações de caractere estejam corrretos. A diretiva lower_case_table_names é fundamental em ambientes Linux para garantir que os nomes das tabelas não sejam sensíveis a maiúsculas e minúsculas.
cat <<EOF > /etc/my.cnf
[mysqld]
port=3307
basedir=/opt/mysql/binaries
datadir=/opt/mysql/data
max_connections=5000
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
lower_case_table_names=1
[mysql]
default-character-set=utf8mb4
[client]
port=3307
default-character-set=utf8mb4
EOF
5. Inicialização do Banco de Dados e Início do Serviço
Execute o comando de inicialização. Atenção: anote a senha temporária gerada no console.
/opt/mysql/binaries/bin/mysqld --initialize --console --user=mysql
Para iniciar o serviço, utilize o script de suporte e adicione-o ao init.d para facilitar o gerenciamento via service:
cp /opt/mysql/binaries/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
Resolução de problemas: Se ocorrer erro de my_print_defaults ou updating PID file, verifique se os caminhos no /etc/my.cnf correspondem exatamente ao basedir e se o usuário mysql tem permissão de escrita no datadir.
6. Configuração de Variáveis de Ambiente e Alteração de Senha
Para executar o cliente MySQL de qualquer diretório sem precisar especificar o caminho absoluto, crie um link simbólico:
ln -s /opt/mysql/binaries/bin/mysql /usr/local/bin/mysql
Acesse o console utilizando a senha temporária e altere a credencial do root:
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NovaSenhaForte@2023';
7. Habilitação de Acesso Remoto
Para permitir conexões externas, atualize a tabela de usuários do MySQL alterando o host de origem:
USE mysql;
UPDATE user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
Reinicie o serviço para aplicar todas as alterações de rede e configuração:
service mysqld restart