Tutorial

Como Instalar e Utilizar o PostgreSQL no Ubuntu 18.04

Published on December 12, 2019
Português
Como Instalar e Utilizar o PostgreSQL no Ubuntu 18.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 PostgreSQLou Postgres é um sistema de gerenciamento de banco de dados relacionados que fornece uma implementação da linguagem estruturada SQL. É uma escolha popular para muitos projetos pequenos e grandes e tem a vantagem de ser compatível com padrões e ter muitas funcionalidades avançadas como transações confiáveis e simultaneidade sem bloqueios de leitura.

Este guia demonstra como instalar o Postgres em uma instância Ubuntu 18.04 VPS e também fornece instruções para a administração básica de banco de dados.

Pré-requisitos

Para acompanhar este tutorial, você precisará de um servidor Ubuntu 18.04 que tenha sido configurado seguindo nosso guia Configuração Inicial de Servidor para Ubuntu 18.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.

Uma vez que essa é a primeira vez que você usa o apt nesta sessão, atualize seu índice de pacotes local. Então, instale o pacote Postgres jutamente com um pacote -contrib que adiciona alguns serviços e funcionalidade adicionais:

  1. sudo apt update
  2. sudo apt install postgresql postgresql-contrib

Agora que o software está instalado, podemos examinar como ele funciona e como ele pode ser diferente de 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 um prompt Postgres imediatamente digitando:

  1. psql

Isso irá logar você no prompt do PostgreSQL, e daqui você está livre para interagir com o sistema de gerenciamento de banco de dados imediatamente.

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, você pode criar 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 sammy, esse role irá tentar se conectar a um banco de dados que também seja chamado “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.

Primeiro, crie uma tabela para armazenar alguns dados. Como um exemplo, uma tabela que descreva alguns equipamentos do playground.

A sintaxe básica para este comando é 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 uma tabela simples como essa:

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

Estes comandos criarão uma tabela que inventaria o equipamento do playground. Isso começa com um ID do equipamento que é do tipo serial. Este tipo de dado é um número inteiro de incremento automático. Você também deu a essa coluna a restrição da primary key, que significa que os valores devem ser únicos e não nulos.

Para duas das colunas (equip_id e install_date), os comandos não especificam um comprimento de campo. Isso é porque alguns tipos de coluna não requerem um comprimento específico porque o comprimento é implícito pelo tipo.

Os dois comandos seguintes criam colunas para o type e color do equipamento respectivamente, cada um dos quais não pode ser vazio. O comando seguinte a esses cria uma coluna location e cria uma restrição que exige que o valor seja um de oito valores possíveis. O último comando cria uma coluna de data que grava a data na qual você instalou o equipamento.

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)

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 slide e um swing chamando a tabela na qual você queira adicionar, nomeando as colunas e então 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 que uma nova linha na tabela seja criada.

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)

Você percebe que seu slide já não é uma parte da tabela.

Passo 8 — Adicionando e Deletando Colunas de uma Tabela

Após criar uma tabela, você pode modificá-la para adicionar ou remover colunas com facilidade. 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ê ver sua informação da 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)

Deletar uma coluna é também bastante simples. 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. Você pode consultar o registro “swing” (isto irá corresponder a cada swing na sua tabela) e alterar sua cor para “vermelho”. Isso pode ser útil se você der ao conjunto swing um trabalho de pintura:

  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 | 2010-08-16 (1 row)

Como você pode ver, seu slide agora está registrado como sendo vermelho.

Conclusão

Você agora está com o PostgreSQL configurado no seu servidor Ubuntu 18.04. No entanto, ainda há muito mais a aprender com o Postgres. Aqui estão mais alguns guias que cobrem como usar o Postgres:

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

Learn more about us


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!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

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

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel