Os usuários do Ubuntu podem escolher entre dois Sistemas de Gerenciamento de Banco de Dados Relacionais confiáveis (RDBMS),MySQL eMariaDB . O MySQL tem uma vantagem de longa data em popularidade, mas tem aumentado o interesse no MariaDB devido às suas vantagens de desempenho e recursos adicionais. Este guia compara os dois sistemas de banco de dados e fornece instruções sobre como instalar e usar o MySQL no Ubuntu 20.04.
O que é MySQL?
O MySQL RDBMS é um dos aplicativos de código aberto mais populares. Faz parte da Pilha LAMP , que é a base de muitos sistemas Ubuntu. Essa pilha consiste no Linux, no servidor web Apache, no MySQL RDBMS e na linguagem de programação PHP. Esses aplicativos trabalham juntos para dar suporte a aplicativos da Web, desenvolvimento de software e atividades especializadas, como ciência de dados. O principal uso do MySQL é em configurações de servidor único de pequeno e médio porte.
As consultas do MySQL são escritas na Linguagem de consulta estruturada (SQL). Como um banco de dados relacional, ele armazena e organiza os dados em tabelas. As tabelas estruturam os dados reais dentro das tabelas como uma série de linhas, com cada linha consistindo em uma ou mais colunas. Cada linha representa uma entrada diferente na tabela, enquanto cada coluna contém um campo de dados dentro da entrada. Os campos de dados nessas tabelas podem ser relacionados entre si, e essas relações ajudam a estruturar e organizar o banco de dados. As instruções SQL especializadas permitem que os clientes adicionem, excluam, modifiquem e recuperem dados.
MySQL é conhecido por sua estabilidade e confiabilidade e é considerado simples e fácil de usar. Está disponível como software de código aberto gratuito sob a GNU General Public License. O MySQL está prontamente disponível para todas as distribuições Linux, bem como para outros sistemas operacionais. Agora é propriedade da Oracle Corporation. A Oracle também oferece o CommercialMySQL Enterprise Edition como um produto de ponta.
MySQL vs. MariaDB
As duas principais alternativas de banco de dados de código aberto, MySQL e MariaDB, são muito semelhantes. Ambos são produtos RDBMS e ambos usam SQL. Ambos os sistemas de banco de dados têm versões gratuitas e parecem e agem da mesma maneira. Como o MariaDB originalmente se ramificou do MySQL, isso não é surpreendente. Desde então, o MariaDB passou por um desenvolvimento adicional e apresenta muitas novas melhorias em segurança e desempenho. Com o MySQL, no entanto, muitos recursos avançados são encontrados apenas na Enterprise Edition. Aqui está um resumo das semelhanças e diferenças entre os dois produtos:
- O MariaDB suporta mais conexões do que o MySQL.
- Ambos os bancos de dados podem funcionar com vários sistemas de armazenamento, embora o MariaDB ofereça mais opções.
- O MariaDB pode replicar dados mais rapidamente que o MySQL e tem melhor desempenho geral. O MySQL lida com grandes transações com mais eficiência, mas o MariaDB funciona melhor em situações de escala.
- O MySQL suporta alguns recursos que o MariaDB não possui, como colunas dinâmicas. Cada banco de dados tem alguns recursos avançados e melhorias que o outro não tem.
- O MySQL é mais antigo, mais bem estabelecido, mais popular e tem mais suporte da comunidade. O MySQL oferece planos de suporte pagos mais abrangentes.
- MariaDB e MySQL são totalmente compatíveis.
- Ambos os produtos são de código aberto, mas o modelo de licenciamento do MySQL é mais restritivo.
Para resumir, ambos os sistemas são mais do que adequados para a maioria dos usuários. O MariaDB apresenta melhor desempenho, enquanto o MySQL está mais bem estabelecido e com melhor suporte.
Antes de começar
-
Se você ainda não o fez, crie uma conta Linode e Compute Instance. Veja nossos guias de Introdução ao Linode e Criação de uma instância de computação.
-
Siga nosso guia Configurando e protegendo uma instância de computação para atualizar seu sistema. Você também pode definir o fuso horário, configurar seu nome de host, criar uma conta de usuário limitada e proteger o acesso SSH.
Observação As etapas neste guia foram escritas para usuários não root. Comandos que requerem privilégios elevados são prefixados comsudo
. Se você não estiver familiarizado com osudo
comando, consulte o guia de usuários e grupos do Linux.
Como instalar o servidor MySQL
O MySQL está disponível como parte dos pacotes padrão do Ubuntu, portanto, não é necessário editar a lista de fontes. Ele pode ser facilmente instalado usando
apt
, mas é importante proteger o aplicativo e editar o firewall posteriormente. Estas instruções são voltadas para usuários do Ubuntu, mas geralmente são aplicáveis para aqueles que desejam instalar o MySQL em outra distribuição Linux. Baixar MySQL
Para instalar o servidor MySQL no Ubuntu, siga os passos abaixo:
-
Instale o aplicativo do servidor MySQL.
sudo apt install mysql-server
-
Confirme se o servidor MySQL está rodando usando osystemctl
comando. Ele deve exibir um status deactive
.
sudo systemctl status mysql
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Configurar o servidor MySQL no Linux
A
mysql_secure_installation
utilitário é a maneira mais fácil de configurar o aplicativo. Para usar o script de configuração, siga estas etapas:-
Inicie amysql_secure_installation
utilitário para definir a senha de root e configurar outras opções padrão.
sudo mysql_secure_installation
-
O aplicativo pergunta se deve ativar oVALIDATE PASSWORD COMPONENT
componente. Se você respondery
, ele pergunta se deve definir a força da senha paraLOW
,MEDIUM
, ouHIGH
.
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?
-
No próximo prompt, o utilitário solicita uma senha para a conta root. Defina a senha e, em seguida, digite-a novamente.
Please set the password for root here. New password: Re-enter new password:
-
As perguntas a seguir perguntam se os usuários anônimos devem ser removidos para permitir que oroot
conta para se conectar remotamente e remover otest
base de dados. Digitey
oun
em cada prompt de acordo com suas preferências. Otest
banco de dados é útil durante a validação inicial, mas por motivos de segurança, é melhor não permitir oroot
conta de fazer login remotamente.
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) : 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) : 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
-
Quando solicitado, recarregue oprivilege
tabelas para atualizar o banco de dados.
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!
-
(Opcional ) Para acessar o MySQL remotamente, certifique-se de que o tráfego do MySQL seja permitido através doufw
firewall. Adicione a seguinte regra para abrir a porta3306
no firewall. Esta regra não deve ser adicionada se o acesso remoto não for necessário.
ufw allow mysql
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Faça login no MySQL como usuário root
Embora a
root
usuário tenha acesso total ao banco de dados MySQL, seu uso deve ser reservado para fins administrativos. Isso reduz a chance de sobrescrever acidentalmente seções críticas do banco de dados. Mesmo em uma configuração de usuário único, uma conta de usuário separada deve ser criada para a maioria das atividades do MySQL. Para acessar o servidor MySQL como
root
usuário e criar uma nova conta de usuário, siga estas etapas:-
Use osudo mysql
comando para acessar o banco de dados. O MySQL autentica o usuário root com base em suas credenciais de root ao efetuar login localmente, portanto, nenhuma senha é necessária. Como alternativa, acesse a conta root usandosudo mysql -u root -p
, junto com aroot
senha.
sudo mysql
-
O MySQL exibe o número da versão e algumas informações sobre a instalação e, em seguida, apresenta o prompt do MySQL.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql>
-
Para confirmar que o MySQL está funcionando corretamente, use oSHOW DATABASES
comando para exibir todos os bancos de dados.
SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Crie um novo usuário usando oCREATE USER
comando. Digite o nome de usuário no formato'username'@'IP_Address'
, ondeIP_Address
é o endereço IP do usuário. Se o usuário estiver acessando o MySQL a partir do Linode local, substitualocalhost
no lugar do endereço IP. No comando abaixo, substituamysqluser
epassword
com o nome de usuário e a senha reais.
Observação O MySQL oferece vários mecanismos de autenticação diferentes. A
caching_sha2_password
O método é recomendado para usuários que desejam fazer login usando uma senha e é usado aqui. No entanto, alguns aplicativos mais antigos podem não conseguir autenticar adequadamente dessa maneira. Nesse caso,mysql_native_password
deve ser usado em seu lugar. A replicação da réplica de origem do MySQL pode exigir asha256_password
método.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Conceda acesso ao novo usuário usando oGRANT PRIVILEGE
comando, usando o formatoGRANT list of privileges ON table TO 'username'@'IP_Address';
. Alguns dos privilégios mais comuns incluemCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
eSELECT
. Para aplicar esses privilégios a todos os bancos de dados, use a variável curinga*.*
. O comando a seguir concede privilégios não administrativos comuns em todos os bancos de dados paramysqluser
.
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
Para sair do prompt do MySQL, digiteexit
.
exit
Como usar o MySQL
O MySQL usa a sintaxe SQL padrão para todos os seus comandos. As etapas nesta seção demonstram como executar tarefas básicas no MySQL, como criar bancos de dados, tabelas e adicionar dados. Para obter informações completas sobre como usar o MySQL, consulte o Manual de Referência do MySQL. Para uma introdução breve, mas completa, experimente o tutorial do MySQL.
Criar um banco de dados
-
Para criar um banco de dados, faça login no MySQL usando uma conta comCREATE
privilégios. Substituamysqlusername
com o nome de usuário que você criou.
mysql -u mysqlusername -p
-
Crie um novo banco de dados usando oCREATE DATABASE
comando. Substituanewdatabasename
com o nome desejado para seu banco de dados.
CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
Para confirmar que o novo banco de dados foi criado corretamente, useSHOW DATABASES
.
SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Indique o banco de dados com o qual você deseja trabalhar usando oUSE
comando. Substituanewdatabasename
com o nome do banco de dados que você acabou de criar.
USE newdatabasename;
Database changed
Observação Você também pode usar o
USE
comando quando você tem mais de um banco de dados e deseja alternar entre eles. -
Para descobrir o nome do banco de dados atual, use oSELECT DATABASE
comando. A saída exibe o nome do banco de dados.
SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Criar uma tabela
Neste ponto, o banco de dados,
newdatabasename
não possui nenhuma tabela, portanto, ainda não é possível armazenar nenhum dado nela. Para definir uma tabela, use o CREATE TABLE
comando. Junto com o nome da tabela, este comando requer o nome e o tipo de dados de cada campo. O tipo de dados caracteriza os dados armazenados no campo. Por exemplo, o tipo de dados pode ser uma string de comprimento variável, conhecida como VARCHAR
. Para obter uma lista completa de tipos de dados, consulte a documentação do MySQL. Alguns dos tipos de dados mais comuns são os seguintes. - INT: Isso pode conter um valor entre
-2147483648
e2147483647
. Se especificado comoUNSIGNED
, ele pode armazenar valores entre0
e4294967295
. - PEQUENO: Contém um valor inteiro ainda menor entre
-32768
e32767
. - FLUTUAÇÃO: Este tipo pode armazenar um número de ponto flutuante.
- DATA: Armazena uma data em
YYYY-MM-DD
formato. - DATETIME: Armazena uma combinação de data e hora em
YYYY-MM-DD HH:MM:SS
formato. O mesmo tempo pode ser armazenado sem traços e dois pontos noTIMESTAMP
formato. - VARCHAR(N): Esta é uma string de comprimento variável entre
1
eN
caracteres de comprimento, com um comprimento máximo de255
personagens. - TEXTO: Este tipo de dados comporta até
65535
personagens. Ele pode conter texto, imagens ou dados binários. - CHAR(N): Este tipo representa um campo de texto de comprimento fixo de comprimento
N
. Por exemplo, para armazenar códigos de estado de dois caracteres, use um tipo de dados deCHAR(2)
.
Antes de criar qualquer tabela, é importante decidir sobre um esquema para o banco de dados. O esquema descreve o que cada tabela representa, quais dados são armazenados em cada tabela e como as tabelas se relacionam. Para criar uma tabela, siga estas etapas:
-
Enquanto estiver conectado ao MySQL, alterne para o banco de dados onde deseja adicionar a tabela.
use newdatabasename;
-
Use oCREATE TABLE
comando para gerar uma nova tabela. Use o formatoCREATE TABLE table_name (field_1 datatype, field_n datatype);
.
CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);
Query OK, 0 rows affected (0.02 sec)
-
Para confirmar que a tabela já existe, use oSHOW TABLES
comando.
SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
Para revisar a estrutura da tabela e verificar a lista de campos, use oDESCRIBE
comando.
DESCRIBE newtablename;
+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
-
Se uma tabela não for mais necessária, exclua-a usando oDROP TABLE
comando.
Cuidado Quando uma tabela é descartada, todos os dados dentro da tabela são perdidos e não podem ser recuperados.
DROP TABLE newtablename;
Adicionar e recuperar dados
A principal maneira de inserir uma nova linha de dados em uma tabela é com o
INSERT
comando. -
Para adicionar uma linha, use oINSERT
comando. Especifique o nome da tabela, a palavra-chaveVALUES
, e uma lista de valores entre colchetes e separados por vírgulas no formatoINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Os valores da coluna devem ter a mesma sequência que a definição da tabela, com os valores de string e data entre aspas. Por exemplo, para adicionar dados anewtablename
, especifique valores paracolumn1
,column2
,column3
ecolumn4
, naquela ordem.
INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
Para recuperar dados, use oSELECT
comando, juntamente com algumas restrições informando ao MySQL quais linhas retornar. Todo o conteúdo da tabela pode ser retornado ou apenas um subconjunto. Para selecionar todas as linhas em uma tabela, use oSELECT *
comando, mas não adicione nenhum qualificador.
SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
-
Também é possível selecionar apenas linhas que atendam a critérios específicos, por exemplo, onde uma coluna é definida para um determinado valor. Use oWHERE
palavra-chave como um qualificador, seguido pelos critérios de correspondência como uma restrição. Neste exemplo, apenas as linhas em quecolumn2
está definido comob
Estão exibidas.
SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
Para tabelas com muitas colunas, geralmente é mais fácil limitar as informações exibidas. Para selecionar apenas determinadas colunas para cada linha, especifique os nomes das colunas em vez do*
símbolo.
SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
Para modificar uma linha em uma tabela, use oUPDATE
comando. OSET
palavra-chave indica a coluna a ser atualizada e o novo valor. Se necessário, oWHERE
palavra-chave fornece um método de restringir a operação para aplicar apenas a determinadas linhas. No exemplo a seguir, o valor decolumn4
só é alterado para155
ifcolumn2
é igual ab
.
UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
OSELECT *
pode ser usada para confirmar a atualização.
SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Conclusão:MySQL no Ubuntu 20.04
MySQL é uma boa escolha para aplicações web de pequeno e médio porte. Ele usa a linguagem de programação SQL padrão do setor, que é bastante simples de usar. O MySQL é muito estável e robusto e tem muitos recursos junto com um bom suporte. A principal alternativa ao MySQL é o MariaDB. Apresenta melhor desempenho e recursos mais recentes, mas não está tão bem estabelecido.
Você pode facilmente baixar e instalar o servidor MySQL no Ubuntu usando o
apt
pacotes e a mysql_secure_installation
Utilitário. Mesmo se você for a única pessoa que está usando o MySQL, é melhor criar um novo usuário do MySQL com privilégios mais limitados. Para usar o MySQL, primeiro determine o esquema do banco de dados e defina o conteúdo da tabela. Em seguida, crie um banco de dados e as tabelas de dados. Os dados podem ser adicionados usando o
INSERT
comando, modificado usando o UPDATE
comando e recuperado usando o comando SELECT
comando. Claro, o MySQL pode realizar até mesmo operações altamente complexas. Trabalhe no tutorial do MySQL para começar e consulte a documentação do MySQL para obter uma visão geral completa. Mais informações
Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.
- Site MariaDB
- Site MySQL