Tutorial

Como Instalar e Utilizar o PostgreSQL no Ubuntu 20.04

Published on May 12, 2020

Manager, Developer Education

Português
Como Instalar e Utilizar o PostgreSQL no Ubuntu 20.04

Introdução

Sistemas de gerenciamento de banco de dados relacionados são um componente fundamental de muitos sites e aplicativos. Eles fornecem uma maneira estruturada de armazenar, organizar e acessar informações.

O PostgreSQL ou Postgres é um sistema de gerenciamento de banco de dados relacionados que fornece uma implementação da linguagem estruturada SQL. Ele está em conformidade com as normas e possui muitos recursos avançados, como transações confiáveis e concorrência sem trava de leitura.

Este guia demonstra como instalar o Postgres em um servidor Ubuntu 20.04. Ele também fornece algumas instruções para a administração geral de banco de dados.

Pré-requisitos

Para acompanhar este tutorial, você precisará de um servidor Ubuntu 20.04 que tenha sido configurado seguindo nosso guia Configuração Inicial do Servidor para Ubuntu 20.04. Após concluir este tutorial pré-requisito, seu servidor deve ter um usuário não-root com permissões sudo e um firewall básico.

Passo 1 — Instalando o PostgreSQL

Os repositórios padrão do Ubuntu contêm pacotes Postgres, para que você possa instalar esses usando o sistema de empacotamento apt.

Se você não tiver feito isso recentemente, atualize o índice de pacotes local do seu servidor:

  1. sudo apt update

Então, instale o pacote Postgres jutamente com um pacote -contrib que adiciona alguns serviços e funcionalidade adicionais:

  1. sudo apt install postgresql postgresql-contrib

Agora que o software está instalado, podemos examinar como ele funciona e como ele pode ser diferente de outros sistemas similares de gerenciamento de banco de dados que você possa ter usado.

Passo 2 — Usando as Roles PostgreSQL e Bancos de Dados

Por padrão, o Postgres usa um conceito chamado “roles” para lidar com a autenticação e autorização. Essas são, de certa forma, semelhantes a contas regulares estilo Unix, mas o Postgres não distingue entre os usuários e os grupos e, ao invés disso, prefere o termo “role” mais flexível.

Após a instalação, o Postgres é configurado para usar a autenticação ident, o que significa que ele associa os roles com uma conta do sistema Unix/Linux que combine. Se um role existe no Postgres, um nome de usuário Unix/Linux com o mesmo nome é capaz de fazer login como aquele role.

O procedimento de instalação criou uma conta de usuário chamada postgres que está associada ao role padrão do Postgres. Para utilizar o Postgres, você pode logar naquela conta.

Existem algumas maneiras de utilizar essa conta para acessar o Postgres.

Mudando para a Conta postgres

Mude para a conta postgres no seu servidor digitando:

  1. sudo -i -u postgres

Agora você pode acessar o prompt do Postgres imediatamente digitando:

  1. psql

A partir daí, você está livre para interagir com o sistema de gerenciamento de banco de dados quando necessário.

Saia do prompt do PostgreSQL digitando:

  1. \q

Isso irá trazer você de volta ao prompt de comando do Linux postgres.

Acessando um Prompt do Postgres Sem Mudar de Contas

Você também pode executar o comando que você quiser com a conta postgres diretamente com o sudo.

Por exemplo, no último exemplo, você foi instruído a ir ao prompt do Postgres trocando primeiramente para o usuário postgres e então executando o psql para abrir o prompt do Postgres. Você poderia fazer isso em um passo executando o comando único psql como usuário postgres com sudo, dessa forma:

  1. sudo -u postgres psql

Isso irá logar você diretamente no Postgres sem o shell bash intermediário.

Novamente, você pode sair da sessão interativa Postgres digitando:

  1. \q

Muitas formas de uso requerem mais de um role Postgres. Leia para aprender a configurá-los.

Passo 3 — Criando um Novo Role

Atualmente, você tem o role postgres configurado no banco de dados. Você pode criar novos roles na linha de comando com o comando createrole. A flag --interactive irá te solicitar o nome do novo role e também perguntar se ele deveria ter permissões de superusuário.

Se você estiver logado com a conta postgres, crie um novo usuário digitando:

  1. createuser --interactive

Se, ao invés disso, você preferir usar o sudo para cada comando sem mudar da sua conta usual, digite:

  1. sudo -u postgres createuser --interactive

O script irá te solicitar algumas escolhas e, com base nas suas respostas, executar os comandos corretos do Postgres para criar um usuário nas suas especificações.

Output
Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

Você pode ter mais controle passando algumas bandeiras adicionais. Verifique as opções olhando para a página man:

  1. man createuser

Sua instalação do Postgres agora tem um novo usuário, mas você ainda não adicionou nenhum banco de dados. A próxima seção descreve este processo.

Passo 4 — Criando um Novo Banco de Dados

Outra suposição que o sistema de autenticação do Postgres faz por padrão é que para qualquer role usado para logar, esse role terá um banco de dados com o mesmo nome que ele pode acessar.

Isso significa que, se o usuário que você criou na última seção for chamado de sammy, essa role tentará se conectar a um banco de dados também denominado “sammy”, por padrão. Você pode criar o banco de dados apropriado com o comando createdb.

Se você estiver logado com a conta postgres, você digitaria algo como:

  1. createdb sammy

Se, ao invés disso, você preferir usar o sudo para cada comando sem mudar da sua conta usual, você digitaria:

  1. sudo -u postgres createdb sammy

Esta flexibilidade proporciona vários caminhos para a criação de bancos de dados conforme necessário.

Passo 5 — Abrindo um Prompt do Postgres com o Novo Role

Para logar com a autenticação baseada no ident, você precisará de um usuário Linux com o mesmo nome que seu role e banco de dados do Postgres.

Se você não tiver um usuário do Linux que combine disponível, você pode criar um com o comando adduser. Você terá que fazer isso através da sua conta não-root com privilégios sudo (ou seja, não logado como o usuário postgres):

  1. sudo adduser sammy

Uma vez que essa nova conta estiver disponível, você pode ou mudar e se conectar ao banco de dados digitando:

  1. sudo -i -u sammy
  2. psql

Ou você pode fazer isso em linha:

  1. sudo -u sammy psql

Este comando irá logar você automaticamente, supondo que todos os componentes tenham sido configurados corretamente.

Se você quiser que seu usuário se conecte a um banco de dados diferente, você pode fazer isso especificando o banco de dados dessa forma:

  1. psql -d postgres

Uma vez logado, você pode verificar sua informação de conexão atual digitando:

  1. \conninfo
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

Isso é útil se você estiver se conectando a bancos de dados fora do padrão ou com usuários que não sejam padrão.

Passo 6 — Criando e Deletando Tabelas

Agora que você sabe se conectar ao sistema de banco de dados do PostgreSQL, você pode aprender algumas tarefas básicas de gerenciamento do Postgres.

A sintaxe básica para criar tabelas é a seguinte:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

Como você pode ver, esses comandos dão à tabela um nome e então definem as colunas, além do tipo de coluna e o comprimento máximo dos dados do campo. Você também pode adicionar de modo opcional tabelas de restrições para cada coluna.

Você pode aprender mais sobre como criar e gerenciar tabelas no Postgres aqui.

Para fins demonstrativos, crie a seguinte tabela:

  1. CREATE TABLE playground (
  2. equip_id serial PRIMARY KEY,
  3. type varchar (50) NOT NULL,
  4. color varchar (25) NOT NULL,
  5. location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  6. install_date date
  7. );

Estes comandos criarão uma tabela que faz um inventário de equipamentos de playground. A primeira coluna irá armazenar os números de ID do equipamento do tipo serial, que é um número inteiro de incremento automático. Esta coluna também tem a restrição de PRIMARY KEY, o que significa que os valores dentro dela devem ser únicos e não nulos.

As duas linhas seguintes criam colunas para type e color do equipamento, respectivamente, nenhum dos quais pode ser nulo. A linha seguinte a estas cria uma coluna location bem como uma restrição que exige que o valor seja um de oito valores possíveis. A última linha cria uma coluna de data que registra a data na qual você instalou o equipamento.

Para duas das colunas (equip_id e install_date), o comando não especifica um comprimento do campo. A razão para isso é que alguns tipos de dados não requerem uma definição de comprimento, pois o comprimento ou o formato está implícito.

Você pode ver sua nova tabela digitando:

  1. \d
Output
List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

Sua tabela do playground está aqui, mas também há algo chamado playground_equip_id_seq que é do tipo sequence. Esta é uma representação do tipo serial que você deu à sua coluna equip_id Isso mantém o rastro do próximo número na sequência e é criado automaticamente para colunas deste tipo.

Se você quiser ver apenas a tabela sem a sequência, você pode digitar:

  1. \dt
Output
List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

Com uma tabela pronta, vamos utilizá-la para praticar o gerenciamento de dados.

Passo 7 — Adicionando, Consultando e Deletando Dados em uma Tabela

Agora que você tem uma tabela. você pode inserir alguns dados nela. Como um exemplo, adicione um escorregador ou slide e um balanço ou swing chamando a tabela que você deseja adicionar, nomeando as colunas e, depois, fornecendo dados para cada coluna, desta forma:

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

Você deve tomar cuidado ao introduzir os dados para evitar alguns problemas comuns. Por exemplo, não envolva os nomes das colunas em aspas, mas os valores de coluna que você digitar precisam de aspas.

Outra coisa para ficar atento é não digitar um valor para a coluna equip_id. Isso acontece porque isso é gerado automaticamente sempre quando você adicionar uma nova linha à tabela.

Recupere a informação que você adicionou digitando:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

Aqui, você pode ver que seu equip_id foi preenchido com sucesso e que todos os seus outros dados foram organizados corretamente.

Se o slide no playground falhar e você tiver que removê-lo, você também pode remover a linha da sua tabela digitando:

  1. DELETE FROM playground WHERE type = 'slide';

Consulte a tabela novamente:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

Observe que a linha do slide não faz mais parte da tabela.

Passo 8 — Adicionando e Deletando Colunas de uma Tabela

Após criar uma tabela, você pode modificá-la adicionando ou removendo colunas. Adicione uma coluna para mostrar a última visita de manutenção para cada peça de equipamento digitando:

  1. ALTER TABLE playground ADD last_maint date;

Se você vir a informação da sua tabela novamente, você verá que a nova coluna foi adicionada mas nenhum dado foi adicionado:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

Se você descobrir que sua equipe de trabalho usa uma ferramenta separada para acompanhar o histórico de manutenção, você pode deletar da coluna digitando:

  1. ALTER TABLE playground DROP last_maint;

Isso apaga a coluna last_maint e quaisquer valores encontrados nela, mas deixa todos os outros dados intactos.

Passo 9 — Atualizando os Dados em uma Tabela

Até agora, você aprendeu a adicionar registros a uma tabela e como deletá-los, mas este tutorial ainda não cobriu como modificar os itens existentes.

Você pode atualizar os valores de um item existente consultando o registro que você quiser e definindo a coluna para o valor que você deseja usar. É possível consultar pelo registro swing (isto corresponderá a cada swing na sua tabela) e alterar sua cor para red. Isso pode ser útil se você realizou uma pintura com o swing.

  1. UPDATE playground SET color = 'red' WHERE type = 'swing';

Você pode verificar se a operação foi bem sucedida consultando os dados novamente:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2018-08-16 (1 row)

Como você pode ver, o slide agora está registrado como red (vermelho).

Conclusão

Você agora está com o PostgreSQL configurado no seu servidor Ubuntu 20.04. Se você quiser aprender mais sobre o Postgres e como utilizá-lo, encorajamos você a verificar os seguintes guias:

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.