Mysql
 sql >> Database >  >> RDS >> Mysql

Come installare MySQL 8 su Ubuntu 20.04 LTS

MySQL è tra i più diffusi sistemi di database relazionali utilizzati come archiviazione dati di siti Web e applicazioni Web. Questo tutorial fornisce tutti i passaggi necessari per installare MySQL 8 su Ubuntu 20.04 LTS. I passaggi dovrebbero essere gli stessi su altre versioni di sistemi Ubuntu e Linux. Puoi anche seguire Come installare MySQL 8 su Ubuntu 18.04 LTS. Potresti anche essere interessato ad altri tutorial specifici di MySQL, tra cui Come installare MySQL 8 su Windows e Impara le query SQL di base usando MySQL.

Prerequisiti

Questo tutorial presuppone che tu abbia già installato Ubuntu 20.04 LTS versione desktop o server per l'utilizzo locale o di produzione. Puoi seguire Installa Ubuntu 20.04 LTS Desktop, Installa Ubuntu 20.04 LTS su Windows usando VMware e Spin Up Ubuntu 20.04 LTS Server su Amazon EC2 per installare Ubuntu 20.04 LTS. Presuppone inoltre che tu abbia i privilegi di root o un utente normale con privilegi sudo.

Installa MySQL

Questa sezione fornisce i comandi necessari per installare MySQL Database Server versione 8 su Ubuntu 20.04 LTS.

# Install MySQL Server 8
sudo apt install mysql-server

# Output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0
---
---
Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Renaming removed key_buffer and myisam-recover options (if present)
mysqld will log errors to /var/log/mysql/error.log
mysqld is running as pid 63195
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Setting up mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...

Ho evidenziato i pacchetti MySQL che vengono installati dopo aver eseguito il comando di installazione. Installa pacchetti MySQL core, server e client. Inoltre, durante la stesura di questo tutorial è stato installato il server MySQL versione 8.0.20.

Configura e proteggi l'installazione di MySQL

Dobbiamo anche configurare e proteggere l'installazione utilizzando il comando mysql_secure_installation come mostrato di seguito. Chiederà di impostare la password di root e alcune domande di sicurezza.

Passaggio 1 - Installazione sicura - Esegui il comando per avviare la configurazione di MySQL.

# Secure MySQL
sudo mysql_secure_installation

Passaggio 2 - Convalida password - Chiede di confermare l'utilizzo del validatore di password per convalidare la password. Mostrerà anche la sicurezza della password fornendo la password.

# Password Validator Component
Press y|Y for Yes, any other key for No: y

Se selezioniamo No, non verificherà la sicurezza della password del root MySQL e di altri utenti durante l'aggiunta. Dovremmo usare una password complessa per gli utenti MySQL, quindi si consiglia di utilizzare il componente Password Validator.

Passaggio 3 - Livello di convalida della password - Il comando di installazione sicura richiede il livello di convalida della password e fornisce opzioni per scegliere tra Basso(0), Medio(1) e Forte(2). Si consiglia di utilizzare almeno Livello Medio per avere una password sicura di tutti gli utenti MySQL. Le regole di convalida di tutti i livelli sono elencate di seguito.

Basso - Si aspetta una password di almeno 8 caratteri senza alcuna restrizione sui caratteri.

Medio - Il livello medio prevede una password che contenga almeno 8 caratteri e consenta caratteri numerici, maiuscoli, minuscoli e speciali.

Forte - Il livello Strong prevede una password che contenga almeno 8 caratteri e consenta caratteri numerici, maiuscoli, minuscoli e speciali. Consente anche il file del dizionario.

# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Passaggio 4 - Password di root - Il plug-in di autenticazione predefinito utilizzato da MySQL per l'utente root è auth_socket .

# Password Prompt
New password:<password>
Re-enter new password:<repeat password>

Nel caso in cui tu abbia scelto di utilizzare Password Validator, mostrerà anche la sicurezza della password della password di root e confermerà di utilizzare la password fornita come mostrato di seguito.

# Confirm Password
Estimated strength of the password: 80
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Se optiamo per No, verrà nuovamente richiesta la password.

Passaggio 5 - Rimuovi utenti anonimi - Dopo aver fornito la password, il processo di installazione sicura chiede di rimuovere gli utenti anonimi. MySQL aggiunge un utente anonimo durante l'installazione a scopo di test e consente a chiunque di accedere senza password. Si consiglia di rimuovere l'utente anonimo.

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

Passaggio 6 - Non consentire l'accesso remoto - Il processo di installazione sicura chiede anche di confermare se l'accesso remoto è consentito per l'utente root. Dovremmo scegliere l'opzione y per limitare l'utente root al localhost. Possiamo sempre aggiungere altri utenti per consentire l'accesso remoto quando richiesto.

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

Passaggio 7 - Rimuovi database di test - MySQL crea il database di test durante l'installazione. Puoi conservare il database del test a scopo di analisi e successivamente eliminarlo.

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

Passaggio 8 - Ricarica le tabelle dei privilegi - Infine, l'installazione sicura chiede di ricaricare le tabelle dei privilegi per applicare immediatamente le modifiche.

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

I passaggi completi seguiti da me su una nuova installazione di MySQL sono mostrati di seguito.

# Secure MySQL
sudo mysql_secure_installation

# Configuration
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: 1
Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50
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!

I passaggi precedenti rimuovono il database di test e gli utenti anonimi. Impedisce inoltre l'accesso remoto per garantire che il server sia accessibile localmente utilizzando 127.0.0.1 o host locale .

Verifica installazione

Possiamo verificare l'installazione del server MySQL utilizzando il comando mostrato di seguito per verificare se il server MySQL è in esecuzione.

# Check MySQL Status
systemctl status mysql

# Output mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 19:42:35 IST; 9min ago Main PID: 63433 (mysqld) Status: "Server is operational" Tasks: 40 (limit: 4624) Memory: 319.2M CGroup: /system.slice/mysql.service └─63433 /usr/sbin/mysqld Jun 05 19:42:35 bravo systemd[1]: Starting MySQL Community Server... Jun 05 19:42:35 bravo systemd[1]: Started MySQL Community Server.

Inoltre, controlla la versione del server da noi installato e assicurati che il server sia accessibile utilizzando la password di root da noi configurata.

# Check version
sudo mysql --version

# Output
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

# Login
sudo mysql
# OR
sudo mysql -u root

# Quit Database
exit

Possiamo semplicemente accedere a MySQL come mostrato sopra, anche se abbiamo fornito la password dell'utente root durante la protezione del server MySQL. MySQL consente direttamente l'utente root poiché utilizza auth_socket plugin per l'utente root che non necessita di alcuna password.

Plugin password utente root

Possiamo cambiare il plugin della password dell'utente root a caching_sha2_password (preferito) o mysql_native_password per consentire alle altre applicazioni, incluso phpMyAdmin, di accedere al server MySQL utilizzando l'utente root. Può essere fatto usando i comandi come mostrato di seguito.

# Login to MySQL
sudo mysql

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$[DA
NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

# Change to new and recommended password plugin - caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Change password plugin of root user to mysql_native_password - not recommended
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Quit Database
exit

Utenti aggiuntivi

Possiamo aggiungere altri utenti usando il comando CREATE USER come mostrato di seguito.

# Login to MySQL - auth_socket
sudo mysql

# OR - Login to MySQL - caching_sha2_password
sudo mysql -u root -p

# Add User
CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Quit Database
exit

Puoi anche seguire Impara le query SQL di base con MySQL per apprendere le query SQL di base.

Comandi importanti

Questa sezione mostra alcuni dei comandi importanti per avviare, arrestare e riavviare il server.

# Check server status
sudo service mysql status

# Stop server
sudo service mysql stop

# Start server
sudo service mysql start

# Restart server
sudo service mysql restart
 

Riepilogo

Questo tutorial ha fornito tutti i passaggi necessari per installare la versione più recente del server MySQL, ovvero MySQL 8 su Ubuntu 20.04 LTS. Ha inoltre fornito i passaggi di configurazione per proteggere ulteriormente l'installazione del server MySQL.

Dopo aver completato l'installazione, puoi anche seguire Impara le query SQL di base con MySQL, Guida alla progettazione di database per la gestione dei blog in MySQL e Guida alla progettazione di database per il carrello degli acquisti online in MySQL.