O MySQL está entre os sistemas de banco de dados relacionais populares usados como armazenamento de dados de sites e aplicativos da web. Este tutorial fornece todas as etapas necessárias para instalar o MySQL 8 no Ubuntu 20.04 LTS. As etapas devem ser as mesmas em outras versões dos sistemas Ubuntu e Linux. Você também pode seguir Como instalar o MySQL 8 no Ubuntu 18.04 LTS. Você também pode estar interessado em outros tutoriais específicos do MySQL, incluindo Como instalar o MySQL 8 no Windows e aprender consultas básicas de SQL usando o MySQL.
Pré-requisitos
Este tutorial pressupõe que você já instalou a versão de desktop ou servidor do Ubuntu 20.04 LTS para uso local ou de produção. Você pode seguir Instalar o Ubuntu 20.04 LTS Desktop, Instalar o Ubuntu 20.04 LTS no Windows usando VMware e ativar o servidor Ubuntu 20.04 LTS no Amazon EC2 para instalar o Ubuntu 20.04 LTS. Ele também pressupõe que você tenha privilégios de root ou um usuário comum com privilégios de sudo.
Instalar o MySQL
Esta seção fornece os comandos necessários para instalar o MySQL Database Server versão 8 no 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) ...
Eu destaquei os pacotes MySQL que são instalados após a execução do comando de instalação. Ele instala pacotes de núcleo, servidor e cliente do MySQL. Além disso, o servidor MySQL versão 8.0.20 foi instalado enquanto escrevia este tutorial.
Configurar e proteger a instalação do MySQL
Também devemos configurar e proteger a instalação usando o comando mysql_secure_installation como mostrado abaixo. Ele pedirá para definir a senha de root e algumas perguntas de segurança.
Etapa 1 - Instalação segura - Execute o comando para iniciar a configuração do MySQL.
# Secure MySQL
sudo mysql_secure_installation
Etapa 2 - Validador de senha - Pede para confirmar o uso do validador de senha para validar a senha. Ele também mostrará a força da senha ao fornecer a senha.
# Password Validator Component
Press y|Y for Yes, any other key for No: y
Se selecionarmos Não, ele não verificará a força da senha do root do MySQL e de outros usuários ao adicioná-los. Devemos usar uma senha forte para os usuários do MySQL, portanto, é recomendável usar o Componente Validador de Senha.
Etapa 3 - Nível de validação de senha - O comando de instalação segura solicita o nível de validação da senha e oferece opções para escolher entre Low(0), Medium(1) e Strong(2). Recomenda-se usar pelo menos Nível Médio ter uma senha forte de todos os usuários do MySQL. As regras de validação de todos os níveis estão listadas abaixo.
Baixo - Espera-se uma senha com pelo menos 8 caracteres sem qualquer restrição de caracteres.
Médio - O Nível Médio espera uma senha que tenha pelo menos 8 caracteres e permita caracteres numéricos, maiúsculos, minúsculos e especiais.
Forte - O Nível Forte espera uma senha que tenha pelo menos 8 caracteres e permita caracteres numéricos, maiúsculos, minúsculos e especiais. Também permite o arquivo de dicionário.
# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Etapa 4 - Senha raiz - O plugin de autenticação padrão usado pelo MySQL para o usuário root é auth_socket .
# Password Prompt
New password:<password>
Re-enter new password:<repeat password>
Caso você tenha selecionado usar o Validador de Senha, ele também mostrará a força da senha do root e confirmará o uso da senha fornecida, conforme mostrado abaixo.
# 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 optarmos por Não, ele solicitará novamente a senha.
Etapa 5 - Remover usuários anônimos - Após fornecer a senha, o processo de instalação segura pede para remover os usuários anônimos. O MySQL adiciona um usuário anônimo ao instalá-lo para fins de teste e permite que qualquer pessoa faça login sem uma senha. É recomendado remover o usuário anônimo.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Etapa 6 - Não permitir login remoto - O processo de instalação segura também pede para confirmar se o login remoto é permitido para o usuário root. Devemos escolher a opção y para restringir o usuário root ao localhost. Sempre podemos adicionar usuários adicionais para permitir o login remoto quando necessário.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Etapa 7 - Remover banco de dados de teste - MySQL cria o banco de dados de teste durante a instalação. Você pode manter o banco de dados de teste para fins de análise e depois eliminá-lo.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Etapa 8 - Recarregar tabelas de privilégios - Por fim, a instalação segura pede para recarregar as tabelas de privilégios para aplicar imediatamente as alterações.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
As etapas completas seguidas por mim em uma nova instalação do MySQL são mostradas abaixo.
# 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!
As etapas acima removem o banco de dados de teste e os usuários anônimos. Ele também não permite o login remoto para garantir que o servidor seja acessível localmente usando 127.0.0.1 ou localhost .
Verificar instalação
Podemos verificar a instalação do servidor MySQL usando o comando mostrado abaixo para verificar se o servidor MySQL está em execução.
# 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.
Além disso, verifique a versão do servidor instalado por nós e certifique-se de que o servidor esteja acessível usando a senha de root configurada por nós.
# 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
Podemos simplesmente fazer login no MySQL como mostrado acima, mesmo que tenhamos fornecido a senha do usuário root enquanto protegemos o servidor MySQL. O MySQL permite diretamente o usuário root, pois usa o auth_socket plugin para o usuário root que não precisa de senha.
Plugin de senha de usuário raiz
Podemos alterar o plugin de senha do usuário root para caching_sha2_password (preferencial) ou mysql_native_password para permitir que outros aplicativos, incluindo o phpMyAdmin, façam login no servidor MySQL usando o usuário root. Isso pode ser feito usando os comandos como mostrado abaixo.
# 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
Usuários adicionais
Podemos adicionar usuários adicionais usando o comando CREATE USER conforme mostrado abaixo.
# 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
Você também pode seguir Aprenda consultas básicas de SQL usando MySQL para aprender consultas básicas de SQL.
Comandos importantes
Esta seção mostra alguns dos comandos importantes para iniciar, parar e reiniciar o servidor.
# 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
Resumo
Este tutorial forneceu todas as etapas necessárias para instalar a versão mais recente do servidor MySQL, ou seja, MySQL 8 no Ubuntu 20.04 LTS. Ele também forneceu as etapas de configuração para proteger ainda mais a instalação do servidor MySQL.
Depois de concluir a instalação, você também pode seguir Learn Basic SQL Queries Using MySQL, Guide To Design Database For Blog Management In MySQL e Guide To Design Database For Online Shopping Cart In MySQL.