Temos 3 formas de instalar o MySQL nas distribuições Linux. As instalações podem ser feitas a partir do repositório(yum, apt-get, etc…), a partir do pacote já compilado para a sua distribuição(.rpm, .deb, etc…) ou ainda através dos binários do MySQL.
Nesse momento vamos ver como fazer a instalação a partir dos arquivos binários, e já adianto que será um post um pouco longo, pois temos que configurar tudo manualmente.
Vamos instalar a versão mais recente do MySQL 5.7.

A primeira coisa a ser feita é acessar o site do MySQL e fazer o download do arquivo.

Recomendo executar um yum update antes de iniciar, pois caso tenha alguma lib desatualizada, nesse momento ela será atualizada.

A primeira coisa é fazer o download dos arquivos que vamos precisar.

https://dev.mysql.com/downloads/mysql/

Ao chegar nessa tela verá que a versão que está selecionada para download são os pacotes da versão 8(MySQL Community Server 8.X.XX), mas queremos a versão 5.7, então nessa mesma página, procure por isso “Looking for previous GA versions?” e logo abaixo terá um link “MySQL Community Server 5.7″, clique nele e será direcionado para a página de download da versão 5.7.
Depois selecione o sistema operacional que deseja, como estamos utilizando o CentOS, vamos selecionar a opção “Red Hat Enterprise Linux / Oracle Linux” e depois emos que selecionar a versão do Sistema Operacional em “Select OS Version:”. No meu caso estou usando a versão 7 x86 64 Bit.

mysql_select_version_so

Muita atenção para baixar os pacotes para a versão correta, por exemplo, se o teu SO for 64 Bit, baixe os pacotes para 64 Bit e não para 32 Bit.

Vou fazer o download do arquvo Compressed TAR Archive(mysql-5.7.23-el7-x86_64.tar.gz).

Você pode fazer o download no seu computador e transferir para o servidor ou pode fazer o download direto no servidor, usando o wget, por exemplo.
Eu vou usar o wget, e para isso fiz esses passos:

  1. Clique no botão download do “Compressed TAR Archive”.
  2. Vai aparecer uma página que pede para você fazer o login ou se cadastrar, não precisa fazer nada disso. Mais para baixo tem um link “No thanks, just start my download.”, clique com o botão direito do mouse e ai em “Copiar endereço do Link”, que tem essa url “https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-el7-x86_64.tar.gz”.
  3. No meu servidor usei o wget para fazer o download do arquivo assim “wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-el7-x86_64.tar.gz”.

Pronto já temos o arquivo que precisamos, ele é um pacote bem grande, mas nele tem tudo que precisamos.
Vamos fazer a instalação.

A primeira coisa a fazer é descompactar o arquivo.

tar -zxvf mysql-5.7.23-el7-x86_64.tar.gz

Depois vamos mover todos os arquivos descompactados para a pasta /opt/

mv mysql-5.7.23-el7-x86_64 /opt/

E agora vamos criar um link simbólico da pasta /opt/mysql-5.7.23-el7-x86_64 em /usr/local/mysql

ln -s /opt/mysql-5.7.23-el7-x86_64 /usr/local/mysql

post_mysql_install_link

Uma coisa que acho legal desse formato é que é bem simples fazer o upgrade da versão do MySQL, basicamente é mudar o link simbólico, mas esse é assunto para outro post.

Todos os binários do MySQL estão em /usr/local/mysql/bin, vamos conferir.

[root@PerformanceDB ~]# cd /usr/local/mysql/bin
[root@PerformanceDB bin]# ls -lah
total 1,2G
drwxr-xr-x. 2 root root 4,0K Ago 20 17:51 .
drwxr-xr-x. 9 root root 129 Ago 20 17:51 ..
-rwxr-xr-x. 1 7161 31415 8,7M Jun 8 10:24 innochecksum
-rwxr-xr-x. 1 7161 31415 314K Jun 8 10:24 lz4_decompress
-rwxr-xr-x. 1 7161 31415 7,9M Jun 8 10:24 myisamchk
-rwxr-xr-x. 1 7161 31415 7,5M Jun 8 10:24 myisam_ftdump
-rwxr-xr-x. 1 7161 31415 7,2M Jun 8 10:24 myisamlog
-rwxr-xr-x. 1 7161 31415 7,6M Jun 8 10:24 myisampack
-rwxr-xr-x. 1 7161 31415 5,3M Jun 8 10:24 my_print_defaults
-rwxr-xr-x. 1 7161 31415 11M Jun 8 10:25 mysql
-rwxr-xr-x. 1 7161 31415 9,2M Jun 8 10:25 mysqladmin
-rwxr-xr-x. 1 7161 31415 11M Jun 8 10:25 mysqlbinlog
-rwxr-xr-x. 1 7161 31415 9,5M Jun 8 10:25 mysqlcheck
-rwxr-xr-x. 1 7161 31415 195M Jun 8 10:27 mysql_client_test_embedded
-rwxr-xr-x. 1 7161 31415 4,8K Jun 8 10:24 mysql_config
-rwxr-xr-x. 1 7161 31415 8,1M Jun 8 10:25 mysql_config_editor
-rwxr-xr-x. 1 7161 31415 237M Jun 8 10:28 mysqld
-rwxr-xr-x. 1 7161 31415 160M Jun 8 10:23 mysqld-debug
-rwxr-xr-x. 1 7161 31415 27K Jun 8 10:24 mysqld_multi
-rwxr-xr-x. 1 7161 31415 28K Jun 8 10:24 mysqld_safe
-rwxr-xr-x. 1 7161 31415 9,5M Jun 8 10:25 mysqldump
-rwxr-xr-x. 1 7161 31415 7,3K Jun 8 10:24 mysqldumpslow
-rwxr-xr-x. 1 7161 31415 194M Jun 8 10:27 mysql_embedded
-rwxr-xr-x. 1 7161 31415 9,2M Jun 8 10:25 mysqlimport
-rwxr-xr-x. 1 7161 31415 11M Jun 8 10:25 mysql_install_db
-rwxr-xr-x. 1 7161 31415 5,4M Jun 8 10:25 mysql_plugin
-rwxr-xr-x. 1 7161 31415 19M Jun 8 10:26 mysqlpump
-rwxr-xr-x. 1 7161 31415 9,1M Jun 8 10:25 mysql_secure_installation
-rwxr-xr-x. 1 7161 31415 9,1M Jun 8 10:25 mysqlshow
-rwxr-xr-x. 1 7161 31415 9,2M Jun 8 10:25 mysqlslap
-rwxr-xr-x. 1 7161 31415 5,7M Jun 8 10:24 mysql_ssl_rsa_setup
-rwxr-xr-x. 1 7161 31415 194M Jun 8 10:27 mysqltest_embedded
-rwxr-xr-x. 1 7161 31415 4,9M Jun 8 10:24 mysql_tzinfo_to_sql
-rwxr-xr-x. 1 7161 31415 13M Jun 8 10:25 mysql_upgrade
-rwxr-xr-x. 1 7161 31415 24M Jun 8 10:25 mysqlxtest
-rwxr-xr-x. 1 7161 31415 5,4M Jun 8 10:24 perror
-rwxr-xr-x. 1 7161 31415 5,1M Jun 8 10:24 replace
-rwxr-xr-x. 1 7161 31415 5,3M Jun 8 10:24 resolveip
-rwxr-xr-x. 1 7161 31415 5,4M Jun 8 10:24 resolve_stack_dump
-rwxr-xr-x. 1 7161 31415 122K Jun 8 10:24 zlib_decompress

Para facilitar o acesso aos binários, vamos incluir no path do linux esse diretório, isso será muito útil para acessar o MySQL cliente ou mysqldump, por exemplo.
Os usuários no linux tem um arquivo chamado .bashrc no diretório /home/ ou no casso do root em /root/ e é nesse arquivo que temos que adicionar essa linha “export PATH=$PATH:/usr/local/mysql/bin”

vim ~/.bashrc
export PATH=$PATH:/usr/local/mysql/bin

post_mysql_install_bashrc

Depois execute esse comando para que a sua sessão no linux já possa acessar os binários do MySQL.

source ~/.bashrc

Para testar digite mysql e enter.

[root@PerformanceDB bin]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Agora aqui um ponto importante, as versão mais recentes do CentOS já vem com alguns pacotes do MariaDB instalado, isso acontece em função de acordos comerciais, vamos verificar e remover esses pacotes caso estejam instalados, assim como o arquivo /etc/my.cnf.

[root@PerformanceDB bin]# rpm -qa |grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@PerformanceDB bin]# yum remove mariadb-libs-5.5.56-2.el7.x86_64
Plugins carregados: fastestmirror
Resolvendo dependências
--> Executando verificação da transação
---> O pacote mariadb-libs.x86_64 1:5.5.56-2.el7 será removido
--> Processando dependência: libmysqlclient.so.18()(64bit) para o pacote: 2:postfix-2.10.1-6.el7.x86_64
--> Processando dependência: libmysqlclient.so.18(libmysqlclient_18)(64bit) para o pacote: 2:postfix-2.10.1-6.el7.x86_64
--> Executando verificação da transação
---> O pacote postfix.x86_64 2:2.10.1-6.el7 será removido
--> Resolução de dependências finalizada

Dependências resolvidas

=========================================================================================================================================================
 Package Arq. Versão Repo Tam.
=========================================================================================================================================================
Removendo:
 mariadb-libs x86_64 1:5.5.56-2.el7 installed 4.4 M
Removendo para as dependências:
 postfix x86_64 2:2.10.1-6.el7 installed 12 M

Resumo da transação
=========================================================================================================================================================
Remove 1 Package (+1 Dependent package)

Tamanho depois de instalado: 17 M
Correto? [s/N]:s
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Apagando : 2:postfix-2.10.1-6.el7.x86_64 1/2 
 Apagando : 1:mariadb-libs-5.5.56-2.el7.x86_64 2/2 
 Verifying : 1:mariadb-libs-5.5.56-2.el7.x86_64 1/2 
 Verifying : 2:postfix-2.10.1-6.el7.x86_64 2/2 

Removido(s):
 mariadb-libs.x86_64 1:5.5.56-2.el7 

Dependência(s) removida(s):
 postfix.x86_64 2:2.10.1-6.el7 

Concluído!

No meu caso o pacote mariadb-libs-5.5.56-2.el7.x86_64 já estava instalado e eu removi, quando removi esse pacote ele já removeu o arquivo my.cmf que tinha.

O próximo passo é criar um arquivo my.cnf básico apenas para subir o serviço do MySQL. Ele bem semelhante ao que criado quando é instalado através do repositório.
Todos os diretórios que estou usando como exemplo, são os recomendados pela Oracle.

vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Veja que apenas está definido o datadir, onde será criado o sockect, qual usuário o MySQL irá utilizar para acessar os arquivos no sistema operacional, local do log se erros e local do pid.

Como vimos, no my.cnf está configurado o usuário mysql, mas esse usuário não existe no Linux, então vamos criar.

adduser -r mysql

E agora vamos criar o diretório que será utilizado como datadir. Vamos criar informar que o dono desse diretório é o usuário mysql.

[root@PerformanceDB /]# mkdir /var/lib/mysql
[root@PerformanceDB /]# ls -lah /var/lib/mysql
total 4,0K
drwxr-xr-x. 2 root root 6 Ago 20 18:34 .
[root@PerformanceDB /]# chown mysql:mysql /var/lib/mysql
[root@PerformanceDB /]# ls -lah /var/lib/mysql
total 4,0K
drwxr-xr-x. 2 mysql mysql 6 Ago 20 18:34 .

E por último criar o diretório que irá ficar o pid.

[root@PerformanceDB /]# mkdir /var/run/mysqld
[root@PerformanceDB /]# chown mysql:mysql /var/run/mysqld/
[root@PerformanceDB /]# ls -lah /var/run/mysqld/
total 0
drwxr-xr-x. 2 mysql mysql 40 Ago 20 18:42 .

Agora que já temos os binários, o path no sistema operacional, o my.cnf e os diretórios criados e com as permissões corretas, vamos iniciar o MySQL. Isso mesmo iniciar, como estamos utilizando diretamente os binários, não tem instalação para ser feita, apenas iniciar.
Na primeira vez que for iniciar o MySQL, é necessário informar para o deamon do MySQL, o mysqld que é necessário criar os arquivos do MySQL no datadir, e para isso basta fazer dessa forma.

[root@PerformanceDB /]# mysqld --initialize
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

Vejam que eu tive um erro, no meu servidor não tem o libaio instalado, então antes vou ter que fazer a instalação, pois ele é um pré requisito.

[root@PerformanceDB /]# yum install libaio -y
Plugins carregados: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.es.its.nyu.edu
 * extras: mirrors.centos.webair.com
 * updates: mirrors.tripadvisor.com
Resolvendo dependências
--> Executando verificação da transação
---> O pacote libaio.x86_64 0:0.3.109-13.el7 será instalado
--> Resolução de dependências finalizada

Dependências resolvidas

=========================================================================================================================================================
 Package Arq. Versão Repo Tam.
=========================================================================================================================================================
Instalando:
 libaio x86_64 0.3.109-13.el7 base 24 k

Resumo da transação
=========================================================================================================================================================
Instalar 1 Package

Tamanho total do download: 24 k
Tamanho depois de instalado: 38 k
Downloading packages:
libaio-0.3.109-13.el7.x86_64.rpm | 24 kB 00:00:00 
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Instalando : libaio-0.3.109-13.el7.x86_64 1/1 
 Verifying : libaio-0.3.109-13.el7.x86_64 1/1 

Instalados:
 libaio.x86_64 0:0.3.109-13.el7 

Concluído

Agora vamos novamente inicializar o datadir.

[root@PerformanceDB /]# mysqld --initialize
2018-08-20T18:48:38.536672Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-08-20T18:48:38.783197Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-08-20T18:48:38.845312Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-08-20T18:48:38.915621Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a6c4fac4-a4a9-11e8-9c55-72b5b55ced55.
2018-08-20T18:48:38.921551Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-08-20T18:48:38.922370Z 1 [Note] A temporary password is generated for root@localhost: hghp(d#a_9tC

Veja que ele já mostra a senha temporária do usuário root, guarde ela pois vamos precisar para acessar o MySQL, diferente da instalação através do repositório, essa senha não foi gravada no log de erro, e esse é o único momento que ela é exibida, caso não anote será necessário excluir os arquivos do datadir e executar novamente o comando mysqld –initialize.
Vamos ver como que ficou o datadir.

[root@PerformanceDB /]# ls -lah /var/lib/mysql/
total 109M
drwxr-xr-x. 5 mysql mysql 147 Ago 20 18:48 .
drwxr-xr-x. 28 root root 4,0K Ago 20 18:34 ..
-rw-r-----. 1 mysql mysql 56 Ago 20 18:48 auto.cnf
-rw-r-----. 1 mysql mysql 417 Ago 20 18:48 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12M Ago 20 18:48 ibdata1
-rw-r-----. 1 mysql mysql 48M Ago 20 18:48 ib_logfile0
-rw-r-----. 1 mysql mysql 48M Ago 20 18:48 ib_logfile1
drwxr-x---. 2 mysql mysql 4,0K Ago 20 18:48 mysql
drwxr-x---. 2 mysql mysql 8,0K Ago 20 18:48 performance_schema
drwxr-x---. 2 mysql mysql 8,0K Ago 20 18:48 sys

Agora já podemos iniciar o serviço do mysql, nesse caso recomendo utilizar o mysql_safe e não apenas o mysqld, vejam também que no final do mysql_safe eu coloquei um &, isso é para que ele fique executando em segundo plano.

[root@PerformanceDB /]# mysqld_safe &
[1] 22418
[root@PerformanceDB /]# 2018-08-20T19:01:34.306959Z mysqld_safe Logging to '/var/log/mysqld.log'.
2018-08-20T19:01:34.344019Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Vamos conferir se o serviço está rodando.

[root@PerformanceDB /]# ps -aux |grep mysql 
root 22418 0.0 0.0 113308 1624 pts/0 S 19:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe
mysql 22555 1.2 8.8 1116952 167392 pts/0 Sl 19:01 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 22584 0.0 0.0 112724 972 pts/0 S+ 19:01 0:00 grep --color=auto mysql

Pronto, mysql instalado e funcionando, agora vamos acessar o MySQL e alterar a senha do root.

[root@PerformanceDB /]# mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Deu um erro ao ler o socket, já que para a coenxão localhost o mysql cli vai utilziar o socket.
Como podem ver no my.cnf nós definimos onde o socket será criado ‘socket=/var/lib/mysql/mysql.sock’, porém o mysql cli tem como path default /tmp/mysql.sock, então vamos ajustar o my.cnf para que o mysql cli utilize o path que definimos.

vim /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/var/lib/mysql/mysql.sock

Como essa alteração só afeta o mysql cli e não mo mysql server não é necessário reiniciar, pois o mysql cli fará a leitura em tempo de execução.

[root@PerformanceDB /]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD = password("Nova.Senha.123@!");
Query OK, 0 rows affected, 1 warning (0,00 sec)

Como última passo para concluirmos esse post, vamos configurar o serviço do MySQL no sistema operacional, para que possamos utilizar os comandos de service mysqld start/stop/status, etc… No inicio eu disse que seria tudo configurado na mão!

Primeiro vamos parar o serviço do MySQL com o mysqladmin

[root@PerformanceDB /]# mysqladmin -uroot -p shutdown
Enter password: 
2018-08-20T19:12:13.528718Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Concluído mysqld_safe

[root@PerformanceDB /]# ps -aux |grep mysql
root 22598 0.0 0.0 112724 968 pts/0 S+ 19:12 0:00 grep --color=auto mysql

Junto com os arquivos que baixamos lá no inicio, já tem pronto o script que precisamos para poder configurar o serviço, que é o arquivo /usr/local/mysql/support-files/mysql.server, só temos que criar um link simbólico em /etc/init.d.

[root@PerformanceDB /]# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@PerformanceDB /]# ls -lah /etc/init.d/mysqld 
lrwxrwxrwx. 1 root root 43 Ago 20 19:15 /etc/init.d/mysqld -> /usr/local/mysql/support-files/mysql.server

E pronto, já podemos usar o serviço.

[root@PerformanceDB /]# service mysqld start
Starting MySQL. SUCCESS! 

[root@PerformanceDB /]# service mysqld status
 SUCCESS! MySQL running (22783)

[root@PerformanceDB /]# ps -aux |grep mysql
 root 22619 0.0 0.0 11816 1616 pts/0 S 19:15 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/PerformanceDB.pid
 mysql 22783 0.9 8.8 1116948 166592 pts/0 Sl 19:15 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/lib/mysql/PerformanceDB.pid --socket=/var/lib/mysql/mysql.sock
 root 22831 0.0 0.0 112724 972 pts/0 S+ 19:16 0:00 grep --color=auto mysql

 

Veja também
INSTALANDO O MYSQL 5.7 NO CENTOS A PARTIR DO REPOSITÓRIO
INSTALANDO O MYSQL 5.7 NO CENTOS COM OS ARQUIVOS RPM

 

Post Navigation