Pesquisa de site

Como instalar o MySQL 8.1 no Debian/Ubuntu


Os bancos de dados estão em quase todos os lugares onde os dados estão envolvidos. Eles desempenham um papel fundamental no armazenamento e gerenciamento de dados. Bancos de dados podem ser definidos como uma coleção sistemática de dados armazenados eletronicamente em um sistema de computador. O banco de dados normalmente é controlado por um sistema de gerenciamento de banco de dados (SGBD). Quando os dados, o DMBS e todos os aplicativos associados são reunidos, eles formam um sistema de banco de dados, que geralmente é abreviado para apenas um banco de dados.

Existem vários tipos de bancos de dados. Os mais populares são:

  • Bancos de dados relacionais: onde os dados são armazenados em tabelas com linhas e colunas
  • Bancos de dados orientados a objetos: aqui, os dados são representados na forma de objetos, como na programação orientada a objetos.
  • Bancos de dados distribuídos: consistem em dois ou mais arquivos armazenados em computadores diferentes no mesmo local físico espalhados.
  • Bancos de dados NoSQL: também são chamados de bancos de dados não relacionais. Eles permitem que dados não estruturados e semiestruturados sejam armazenados e manipulados.
  • Bancos de dados gráficos: Eles armazenam dados criando relacionamentos entre entidades.
  • Banco de dados de documentos/JSON: Eles são usados para armazenar e gerenciar informações orientadas a documentos

MySQL é um banco de dados relacional desenvolvido pela empresa sueca MySQL AB em 1995. O principal objetivo da criação deste banco de dados foi fornecer uma maneira eficiente e confiável de gerenciar dados. Em 2008, o MySQL foi adquirido pela Sun Microsystems. Em 2009, a Oracle celebrou um acordo definitivo e adquiriu a Sun Microsystems.

Através de vários desenvolvimentos e melhorias, a versão mais recente do MySQL é a versão 8.1. Esta versão possui vários recursos e melhorias. Alguns deles são:

  • Capturando a saída EXPLAIN FORMAT=JSON: nesta nova versão, o EXPLAIN FORMAT=JSON com uma opção INTO foi estendido. Isso permite salvar a saída EXPLAIN formatada em JSON em uma variável de usuário onde ela pode ser trabalhada usando funções JSON do MySQL.
  • Comentários do cliente preservados: Nas versões anteriores, o comportamento padrão do cliente MySQL era a remoção de comentários. Nesta nova versão, o comportamento padrão é preservar tais comentários.
  • Replicação MySQL: alteração SOURCE_RETRY_COUNT. No MySQL 8.1, o valor padrão para SOURCE_RETRY_COUNT da opção CHANGE REPLICATION SOURCE TO foi definido como 10.
  • O registro do processo de desligamento foi melhorado, agora foram adicionadas mensagens de inicialização e desligamento para o servidor MySQL, plug-ins e componentes.

As etapas abaixo irão ajudá-lo a instalar o MySQL 8.1 no Debian/Ubuntu.

1. Prepare seu sistema

Comece atualizando o sistema e instalando os pacotes necessários:

sudo apt update
sudo apt install wget vim -y

Em sistemas Debian 12, você precisa de libssl1.1 e mecab-ipadic-utf8 que podem ser instalados a partir do repositório Debian 11 executando o comandos:

echo 'deb http://security.debian.org/debian-security bullseye-security main' | sudo tee -a /etc/apt/sources.list
sudo apt update && sudo apt install libssl1.1 mecab-ipadic-utf8

Depois de instalado, desative o repositório

sudo sed -i 's/^deb http:\/\/security.debian.org\/debian-security bullseye-security main/#&/' /etc/apt/sources.list

2. Instale pacotes MySQL 8.1 no Debian/Ubuntu

Existem duas maneiras principais que podem ser usadas para instalar o MySQL 8.1 no Debian/Ubuntu. Esses métodos são:

  • Instale o MySQL 8.1 usando o repositório APT
  • Instale o MySQL 8.1 usando binários

Siga qualquer um dos métodos abaixo que melhor funcione para você:

Método 1. Instale o MySQL 8.1 usando o repositório APT

Neste método, há uma série de etapas que você precisa seguir. Estas etapas são: comece adicionando o repositório MySQL ao seu sistema Debian/Ubuntu. Você pode baixar o pacote na página de downloads do MySQL.

Alternativamente, você pode usar wget para obter o pacote:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb

Agora configure o repositório executando o comando:

sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb

Prossiga e selecione seu sistema, Debian/Ubuntu. (Não há suporte para Debian 12, então você pode apenas usar o repositório Debian 11 em sistemas Debian 12)

Após selecionar o sistema correto, selecione a opção Servidor MySQL e Cluster.

Agora selecione a versão do MySQL para instalar. Aqui, iremos para ainovação MySQL(MySQL 8.1)

Conclua a configuração selecionando OK

Após a configuração do repositório, podemos instalar facilmente o MySQL 8.1 no Debian/Ubuntu. Primeiro, atualize o índice do pacote:

sudo apt update -y

Agora instale os pacotes MySQL 8.1 com o comando:

sudo apt install mysql-client mysql-community-server mysql-server

Árvore de dependência:

Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libaio1 mysql-common mysql-community-client mysql-community-client-core
  mysql-community-client-plugins mysql-community-server-core
The following NEW packages will be installed:
  libaio1 mysql-client mysql-common mysql-community-client mysql-community-client-core
  mysql-community-client-plugins mysql-community-server mysql-community-server-core
  mysql-server
0 upgraded, 9 newly installed, 0 to remove and 128 not upgraded.
Need to get 35.3 MB of archives.
After this operation, 305 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Conclua a instalação definindo uma senha root forte conforme mostrado abaixo.

Método 2. Instale o MySQL 8.1 usando binários

Este método envolve o download dos arquivos binários .DEB do MySQL 8.1 da página de downloads do MySQL. Nesta página, selecione o binário apropriado para o seu sistema.

Você também pode extrair os binários usando wget conforme mostrado:

##For Ubuntu 22.04
wget https://dev.mysql.com/get/mysql-server_8.1.0-1ubuntu22.04_amd64.deb-bundle.tar

##For Debian 11/Debian 12(with libssl 1.1 and mecab-ipadic-utf8 installed)
wget https://dev.mysql.com/get/mysql-server_8.1.0-1debian11_amd64.deb-bundle.tar

Após o download do pacote, extraia-o com o comando:

tar -xvf mysql-server_*

Agora instale os pacotes com o comando:

sudo dpkg -i mysql-{common,community-client-plugins,community-client-core,community-client,client,community-server-core,community-server,server}_*.deb

Nota: Este método não fornece binários para o Ubuntu 20.04, nesse caso, os usuários podem usar o Método 1. Os usuários do Debian 12 podem usar os binários do Debian 11 após terem libssl 1.1 e libssl 1.1 e mecab-ipadic-utf8 instalado como na etapa 1

Concluir a instalação do MySQL 8.1

Com qualquer um dos métodos acima selecionados, você precisa finalizar a instalação definindo uma senha root forte do MySQL:

Confirme a senha fornecida

Defina o mecanismo de autenticação. Aqui, definiremos o mecanismo de Criptografia de senha forte.

Verifique se o serviço está em execução:

$ systemctl status mysql
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-09-28 06:55:01 EDT; 4min ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 3374 (mysqld)
     Status: "Server is operational"
      Tasks: 37 (limit: 4623)
     Memory: 390.7M
        CPU: 8.092s
     CGroup: /system.slice/mysql.service
             └─3374 /usr/sbin/mysqld

3. Proteja a instalação do MySQL

Após instalar o MySQL, é recomendado protegê-lo. Para conseguir isso, execute:

sudo mysql_secure_installation

Proceda conforme mostrado, forneça a senha root que você definiu acima e prossiga.

Securing the MySQL server deployment.

Enter password for user root: <Enter set root 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: 2
...
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
....
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y  
....
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y  
....
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y  
....
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y  
Success.

All done! 

4. Acesse e use MySQL

Agora você pode acessar e usar o MySQL localmente. Para acessar o shell do MySQL, execute:

mysql -u root -p

Forneça a senha root e você terá acesso:

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.1.0 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

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> 

Agora você está pronto para usar o banco de dados MySQL 8.1 conforme desejado. Para verificar a versão, execute:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.1.0     |
+-----------+
1 row in set (0.00 sec)

Crie um banco de dados e um usuário

Para criar um banco de dados e um usuário com permissões para acessá-lo, emita comandos SQL com a sintaxe abaixo:

CREATE DATABASE mydb;
CREATE USER 'mydbuser'@'%' IDENTIFIED BY 'DBUserStr0ngPassw0d';
GRANT ALL PRIVILEGES ON mydb.* TO 'mydbuser'@'%'; 
FLUSH PRIVILEGES;
exit

Você pode testar se o usuário consegue acessar o banco de dados:

mysql -u mydbuser -p

Mostre os bancos de dados:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Crie tabelas e insira dados

Uma vez conectado, crie uma tabela no banco de dados:

USE mydb;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50)
);

Adicione dados à tabela

INSERT INTO users (username) VALUES
    ('JohnDoe'),
    ('JaneSmith'),
    ('BobJohnson');

Consulte os dados:

mysql> SELECT * FROM users;
+----+------------+
| id | username   |
+----+------------+
|  1 | JohnDoe    |
|  2 | JaneSmith  |
|  3 | BobJohnson |
+----+------------+
3 rows in set (0.00 sec)

mysql> exit

5. Configure o MySQL para aceitar conexões remotas

Para acessar esta instância do MySQL remotamente, você precisa fazer algumas configurações. Abra o arquivo de configuração do MySQL

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

No arquivo, defina ou adicione o endereço de ligação conforme mostrado:

# By default we only accept connections from localhost 
#bind-address   = 127.0.0.1 
bind-address   = 0.0.0.0

Depois de feitas as alterações, salve o arquivo e reinicie o serviço:

sudo systemctl restart mysql

Permita o serviço através do firewall:

# Open MySQL port 3306 on the firewall
sudo ufw allow mysql

# Allow specific addresses to connect to mysql
sudo ufw allow from <Remote_IP> to any port 3306

Agora você pode acessar a instância do MySQL remotamente usando um comando com a sintaxe:

mysql -u <user> -h <database_server_ip> -p

Por exemplo:

mysql -u mydbuser -h 192.168.200.56 -p

Considerações finais

Este guia forneceu todas as etapas necessárias para instalar o MySQL 8.1 no Debian/Ubuntu. Espero que isso tenha funcionado para você também. Você pode aprender mais sobre MySQL lendo os livros abaixo:

  • Melhores livros para aprender bancos de dados MySQL/MariaDB

Veja mais nesta página:

  • Stellar Repair for MySQL: uma ferramenta poderosa para administradores de banco de dados MySQL
  • Monitore o cluster Percona MySQL/Percona XtraDB com Prometheus e Grafana
  • Configure a instância de banco de dados MySQL do AWS RDS com CloudFormation