MySQL 8 Database Server installeren op CentOS 8

MySQL is een gratis, open-source en een van de populairste databasesystemen over de hele wereld. Het is een relationeel databasemanagement platform dat wordt aangedreven door Oracle Cloud. Het gebruikt Structured Query Language om inhoud in een database toe te voegen, te openen en te beheren. Het staat bekend om zijn bewezen betrouwbaarheid, snelle verwerking, gebruiksgemak en flexibiliteit. Er zijn verschillende nieuwe functies die in MySQL 8 zijn toegevoegd, waaronder, JSON ondersteuning, Transactional Data Dictionary, Persistent runtime configuratie, Document Store, Optimizer Hints, SQL rollen, CTEs en Window functies, Onzichtbare indexen en nog veel meer.

Opmerking: Raadpleeg deofficiële documentatie voordat je MySQL 8 installeert,want MySQL 8 heeft enkele nieuwe mogelijkheden en veranderingen waardoor sommige toepassingen niet compatibel zijn met deze versie.

In deze handleiding laten we je zien hoe je een MySQL 8 database op een CentOS 8 server installeert.

Vereisten

  • Een server waarop CentOS 8 draait.
  • Een root wachtwoord is ingesteld op je server.

Installeer MySQL 8.0 uit de MySQL Repository

Standaard is MySQL 8.0 niet beschikbaar in de CentOS 8 standaard repository. Je zult dus de gemeenschapsrepository van MySQL 8.0 op je systeem moeten installeren. Je kunt het installeren met het volgende commando:

rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm

Je zou de volgende uitvoer moeten zien:

Retrieving https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
warning: /var/tmp/rpm-tmp.hF0m5V: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql80-community-release-el8-1  ################################# [100%]

Controleer vervolgens of de MySQL 8.0 repository al dan niet ingeschakeld is met het volgende commando:

dnf repolist all | grep mysql | grep enabled

Je zou de volgende uitvoer moeten zien:

CentOS-8 - AppStream                            3.1 MB/s | 6.5 MB     00:02    
CentOS-8 - Base                                 3.0 MB/s | 5.0 MB     00:01    
CentOS-8 - Extras                               5.3 kB/s | 2.1 kB     00:00    
MySQL 8.0 Community Server                       24 MB/s | 543 kB     00:00    
MySQL Connectors Community                      1.9 MB/s |  19 kB     00:00    
MySQL Tools Community                           677 kB/s |  62 kB     00:00    
mysql-connectors-community         MySQL Connectors Community     enabled:    42
mysql-tools-community              MySQL Tools Community          enabled:    19
mysql80-community                  MySQL 8.0 Community Server     enabled:    31

Schakel vervolgens de AppStream repository tijdelijk uit en installeer de nieuwste versie van MySQL 8.0 uit de MySQL community repository met het volgende commando:

dnf --disablerepo=AppStream install mysql-community-server -y

Als de installatie met succes voltooid is, kun je de geïnstalleerde versie van MySQL verifiëren met het volgende commando:

mysql -Version

Je zou de volgende uitvoer moeten zien:

mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

Start vervolgens de MySQL service en zet hem aan om te starten na een herstart van het systeem met het volgende commando:

systemctl start mysqld
systemctl enable mysqld

Je kunt ook de status van de MySQL controleren met het volgende commando:

systemctl status mysqld

Je zou de volgende uitvoer moeten zien:

? mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-05 09:37:46 EST; 12s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 3244 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 3329 (mysqld)
   Status: "Server is operational"
    Tasks: 39 (limit: 12537)
   Memory: 587.7M
   CGroup: /system.slice/mysqld.service
           ??3329 /usr/sbin/mysqld

Mar 05 09:37:01 centos8 systemd[1]: Starting MySQL Server...
Mar 05 09:37:46 centos8 systemd[1]: Started MySQL Server.

Vervolgens is het altijd een goed idee om het script mysql_secure_installation uit te voeren om enkele extra beveiligingsfuncties in te schakelen, waaronder, een nieuw MySQL root wachtwoord instellen, anonieme gebruiker verwijderen en remote login uitschakelen.

Zoek eerst het standaard MySQL root wachtwoord op met het volgende commando:

cat /var/log/mysqld.log | grep -i 'temporary password'

Uitvoer:

2020-03-05T14:37:40.273796Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: GN2uNx-vPqwS

Noteer het bovenstaande wachtwoord en verander het met het mysql_secure_installation script.

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Securing the MySQL server deployment.

Enter password for user root:   Provide your temporary MySQL root password

The existing password for the user account root has expired. Please set a new password.

New password:   Provide new root password

Re-enter new password:   Re-enter new root password
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N  Type N and Enter to continue

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Installeer MySQL 8.0 uit de AppStream Repository

Je kunt de MySQL 8.0 ook installeren uit de standaard AppStream repository op de CentOS 8. Je kunt het installeren met het volgende commando:

dnf install @mysql -y

Zodra de installatie voltooid is, controleer je de versie van MySQL met het volgende commando:

mysql -Version

Je zou de volgende uitvoer moeten zien:

mysql  Ver 8.0.17 for Linux on x86_64 (Source distribution)

Start vervolgens de MySQL service en zet hem aan om te starten na systeem herstart met het volgende commando:

systemctl start mysqld
systemctl enable mysqld

Standaard is het MySQL root wachtwoord niet ingesteld in de CentoS 8. Je zult het dus moeten instellen met het mysql_secure_installation script.

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.

New password: 

Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done! 

Conclusie

In de bovenstaande gids heb je geleerd hoe je MySQL 8 kunt installeren uit de MySQL community repository en uit de AppStream repository op CentOS 8. Je kunt nu beginnen met het aanmaken van een nieuwe database en databasegebruikers.