Instalação e Configuração do MySQL 8.0 no Linux

Informações do sistema:

cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

Instalação de dependências:

yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
rpm -qa | grep libaio
yum install libaio libaio-devel

Baixando o pacote de código-fonte:

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.12.tar.gz

Criando o usuário e diretórios de dados com as permissões adequadas:

groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
chmod -R 755 /usr/local/mysql/
chmod -R 755 /data/mysql/

Extraindo o código-fonte e iniciando o processo de compilação:

tar -zxf mysql-boost-8.0.12.tar.gz

Configuração da compilação com CMake:

cd mysql-8.0.12
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=~/mysql-8.0.12/boost \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

Parâmetros de configuração explicados:

  • CMAKE_INSTALL_PREFIX: Define o diretório de instalação base.
  • MYSQL_DATADIR: Especifica o diretório para os arquivos de dados.
  • SYSCONFDIR: Indica o local para escanear o arquivo de configuração.
  • MYSQL_TCP_PORT: Define a porta de rede do serviço.
  • WITH_BOOST: Aponta para o local das bibliotecas Boost.
  • DEFAULT_CHARSET: Define o conjunto de caracteres padrão.
  • DEFAULT_COLLATION: Define a ordenação padrão.
  • ENABLED_LOCAL_INFILE: Habilita a cláusula LOCAL para o comando LOAD DATA INFILE.

Compilação e instalação:

make && make install

Inciialização do banco de dados:

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

Criação do arquivo de configuração principal:

cat > /etc/my.cnf <<eof basedir="/usr/local/mysql" character-set-server="utf8mb4" datadir="/data/mysql" default-character-set="utf8mb4" default-storage-engine="INNODB" eof="" init-connect="SET NAMES utf8mb4" log_error="/data/mysql/mysqld-error.log" max_allowed_packet="16M" max_connections="200" pid-file="/data/mysql/mysqld.pid" port="3306" quick="" server-id="1" slow_query_log_file="/data/mysql/mysqld-slow.log" socket="/tmp/mysql.sock" user="mysql"></eof>

Configurando variáveis de ambiente:

echo "PATH=/usr/local/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile

Preparando o script de inicialização:

cp ../mysql-8.0.12/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start

Criando um serviço para o systemd (CentOS 7):

cat > /usr/lib/systemd/system/mysqld.service <<eof after="network.target" banco="" dados="" de="" description="Serviço" do="" eof="" execstart="/etc/init.d/mysqld" execstop="/etc/init.d/mysqld" group="mysql" mysql="" restart="on-failure" start="" stop="" type="forking" user="mysql" wantedby="multi-user.target"></eof>

Iniciando o serviço:

systemctl daemon-reload
systemctl start mysqld.service

Definindo a senha do root. Utilize o método mysql_native_password para compatibilidade:

mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'nova_senha_segura';

Verificando usuários e métodos de autenticação:

SELECT host, user, plugin FROM mysql.user;

2. Instalação via repositório YUM

Configurando o repositório oficial do MySQL:

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum localinstall mysql80-community-release-el7-3.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
yum install mysql-community-server

Habilitando e iniciando o serviço:

systemctl enable mysqld
systemctl start mysqld
netstat -lntup | grep 3306

Obtendo a senha temporária gerada na instalação:

grep 'temporary password' /var/log/mysqld.log

Conectando-se ao servidor e alterando a senha:

mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NovaS@enha123!';

Para mais informações e configuarções avançadas, consulte a documentação oficial do MySQL.

Tags: MySQL Linux CentOS Instalação compilacao

Publicado em 6-8 02:51 por Thomas