Installazione MySql Community 8 su Centos 7 (no MariaDB)

Date le differenze di gestione dei campi di tipo JSON tra MariaDB e MySQL, devo necessariamente installare la versione MySql Community. Pertanto devo disinstallare MariaDB e procedere all’installazione di Mysql Community.

Ho rimosso MariaDB con

yum remove MariaDB-common*

Se provate ad installare Mysql 8 su Centos 7, nonostante voi digitiate install mysql-server, il repository risolverà i pacchetti con quelli di MariaDB, come potete osservare dal seguente output:

[root@nodejs01 ~]# yum install mysql-server
Plugin abilitati:fastestmirror
Loading mirror speeds from cached hostfile

* base: mirrors.prometeus.net
* epel: mirror.imt-systems.com
* extras: mirrors.prometeus.net
* updates: mirrors.prometeus.net

mysql-connectors-community | 2.6 kB 00:00:00
mysql-tools-community | 2.6 kB 00:00:00
mysql80-community | 2.6 kB 00:00:00
(1/3): mysql-connectors-community/x86_64/primary_db | 83 kB 00:00:00
(2/3): mysql-tools-community/x86_64/primary_db | 91 kB 00:00:00
(3/3): mysql80-community/x86_64/primary_db | 177 kB 00:00:00
Risoluzione dipendenze
--> Esecuzione del controllo di transazione
---> Pacchetto MariaDB-server.x86_64 0:10.3.31-1.el7.centos settato per essere installato
--> Elaborazione dipendenza: MariaDB-client per il pacchetto: MariaDB-server-10.3.31-1.el7.centos.x86_64
--> Esecuzione del controllo di transazione
---> Pacchetto MariaDB-client.x86_64 0:10.3.31-1.el7.centos settato per essere installato
--> Risoluzione delle dipendenze completata

Dipendenze risolte

================================================================================================
Package Arch Versione Repository Dim.
================================================================================================

Installazione:
MariaDB-server x86_64 10.3.31-1.el7.centos mariadb-main 24 M
Installazioni per dipendenze:
MariaDB-client x86_64 10.3.31-1.el7.centos mariadb-main 11 M
Riepilogo della transazione
Install 1 Pacchetto (+1 Pacchetto dipendente)
Dimensione totale del download: 36 M
Dimensione installata: 179 M
Is this ok [y/d/N]:

Download del file d’installazione di MySql 8

Pertanto scarico il file .tar con il bundle di Mysql tramite WGET:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar

Estrazione dal file tar

Estraggo quindi i file dal .tar:
tar -xvf mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar

Ottengo i seguenti file:

mysql-community-client-8.0.26-1.el8.x86_64.rpm
mysql-community-client-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-client-plugins-8.0.26-1.el8.x86_64.rpm
mysql-community-client-plugins-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-common-8.0.26-1.el8.x86_64.rpm
mysql-community-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-debugsource-8.0.26-1.el8.x86_64.rpm
mysql-community-devel-8.0.26-1.el8.x86_64.rpm
mysql-community-libs-8.0.26-1.el8.x86_64.rpm
mysql-community-libs-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-server-8.0.26-1.el8.x86_64.rpm
mysql-community-server-debug-8.0.26-1.el8.x86_64.rpm
mysql-community-server-debug-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-server-debuginfo-8.0.26-1.el8.x86_64.rpm
mysql-community-test-8.0.26-1.el8.x86_64.rpm
mysql-community-test-debuginfo-8.0.26-1.el8.x86_64.rpm

Installazione di MySql (tentativo 1)

A questo punto installo quelli che mi interessano:

Per prima cosa installare il pacchetto Common:
yum localinstall mysql-community-common-8.0.26-1.el8.x86_64.rpm

Va in errore in riferimento alle librerie libstdc++.so.6

leggendo su vari siti, mi sono reso conto che il problema era risolvibile rimuovendo il repository di MariaDB in modo da non farmi suggerire l’installazione di quest’ultimo.

Poi ho rinominato /etc/yum.repos.d/mariadb.repo in mariadb.repo.old e poi ho rilanciamo yum install mysql-server

Ha terminato correttamente il processo di installazione, però non mi fa partire il servizio per il seguente errore:

Status: "Data Dictionary upgrade from MySQL 5.7 in progress"
ago 17 16:58:11 nodejs01.localdomain systemd[1]: Starting MySQL Server…
ago 17 16:58:14 nodejs01.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
ago 17 16:58:14 nodejs01.localdomain systemd[1]: Failed to start MySQL Server.
ago 17 16:58:14 nodejs01.localdomain systemd[1]: Unit mysqld.service entered failed state.

Suppongo che sia un problema legato alla precedente installazione di MariaDB.

Installazione MySql (tentativo 2)

Rimuovo MySql con yum remove mysql-server e la cartella /var/lib/mysql. Finalmente con systemctl start mysqld.service, MySql parte ed è abilitato alla partenza del server. Verificare con systemctl status mysqld.service:

● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since mar 2021-08-17 17:15:32 CEST; 1s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 22148 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 22243 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─22243 /usr/sbin/mysqld
ago 17 17:15:17 nodejs01.localdomain systemd[1]: Starting MySQL Server…
ago 17 17:15:32 nodejs01.localdomain systemd[1]: Started MySQL Server.

Configurazione

Prima di procedere con la configurazione, dobbiamo leggere la password provvisoria dal file di log usando il comando:
grep 'password' /var/log/mysqld.log

il risultato dovrebbe essere come il seguente (in grassetto ho evidenziato la password):

2021-08-17T15:15:27.538049Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: op5(XRO%fsiq

Ora possiamo lanciare mysql_secure_installation, reinserire la nuova password e rispondere alle domande come preferite.

Accesso da client remoto

Di default l’accesso a root non è consentito al di fuori di localhost, pertanto bisognerà entrare sul server e da MySql CLI, modificare i permessi di accesso di root con:
USE mysql;
update user set host='%' where user='root';
flush privileges;

Ora potete accedere anche da un’altra macchina che non sia il server.

Share Post:

Condividi su facebook
Condividi su linkedin
Condividi su twitter
Condividi su pinterest
Condividi su email

Rimani connesso

Potrebbe interessarti anche

L’importanza delle classi CRUD

Cos’è una classe CRUD ? CRUD è l’acronimo di Create Read ( o Retrieve ) Update Delete, ovvero le 4 operazioni fondamentali che possiamo effettuare