Introdução
Sistemas de gerenciamento de banco de dados relacionais são um componente chave de muitos sites e aplicativos. Eles fornecem uma maneira estruturada de armazenar, organizar e acessar informações.
O PostgreSQL, também conhecido como Postgres, é um sistema de gerenciamento de banco de dados relacional que fornece uma implementação da Linguagem de Consulta Estruturada, mais conhecida como SQL. É usado por muitos projetos populares, tanto grandes quanto pequenos, é compatível com padrões, e possui muitos recursos avançados como transações confiáveis e concorrência sem bloqueios de leitura.
Ao seguir este guia, você instalará a versão mais recente do PostgreSQL em um servidor Rocky Linux 8.
Pré-requisitos
Para concluir este tutorial, você precisará de um servidor executando o Rocky Linux 8. Este servidor deve ter um usuário não-root com privilégios administrativos e um firewall configurado com firewalld
. Para configurar isso, consulte nosso Guia de Configuração Inicial do Servidor para Rocky Linux 8.
Passo 1 — Instalando o PostgreSQL
O PostgreSQL está disponível no repositório de software padrão AppStream do Rocky Linux, e há várias versões que você pode instalar. Você pode escolher entre essas versões habilitando a coleção apropriada de pacotes e dependências que estejam alinhadas com a versão que deseja instalar, sendo que cada coleção é referida como um fluxo de módulo.
No DNF, o gerenciador de pacotes padrão do Rocky Linux, módulos são coleções especiais de pacotes RPM que juntos compõem uma aplicação maior. Isso tem o objetivo de tornar a instalação de pacotes e suas dependências mais intuitiva para os usuários.
Liste os fluxos de módulo disponíveis para o módulo postgresql
usando o comando dnf
:
OutputName Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Você pode ver neste resultado que existem quatro versões do PostgreSQL disponíveis no repositório AppStream: 9.6
, 10
, 12
e 13
. O fluxo que fornece a versão do Postgres 10 é o padrão, como indicado pelo [d]
que o segue. Para instalar essa versão, você pode simplesmente executar sudo dnf install postgresql-server
e prosseguir para o próximo passo. No entanto, mesmo que a versão 10 ainda seja mantida, este tutorial instalará o Postgres versão 12.
Para instalar o PostgreSQL versão 12, você deve habilitar o fluxo do módulo dessa versão. Ao habilitar um fluxo de módulo, você substitui o fluxo padrão e disponibiliza todos os pacotes relacionados ao fluxo habilitado no sistema. Observe que apenas um fluxo de qualquer módulo pode ser habilitado em um sistema ao mesmo tempo.
Para habilitar o fluxo do módulo para a versão 12 do Postgres, execute o seguinte comando:
Ao ser solicitado, pressione y
e depois ENTER
para confirmar que deseja habilitar o fluxo:
Output====================================================================
Package Architecture Version Repository Size
====================================================================
Enabling module streams:
postgresql 12
Transaction Summary
====================================================================
Is this ok [y/N]: y
Após habilitar o fluxo do módulo da versão 12, você pode instalar o pacote postgresql-server
para instalar o PostgreSQL 12 e todas as suas dependências:
Ao receber o prompt, confirme a instalação pressionando y
e depois ENTER
:
Output. . .
Install 4 Packages
Total download size: 16 M
Installed size: 62 M
Is this ok [y/N]: y
Agora que o software está instalado, você executará algumas etapas de inicialização para preparar um novo cluster de banco de dados para o PostgreSQL.
Passo 2 — Criando um Novo Cluster de Banco de Dados PostgreSQL
Você precisa criar um novo cluster de banco de dados PostgreSQL antes de começar a criar tabelas e carregá-las com dados. Um cluster de banco de dados é uma coleção de bancos de dados gerenciados por uma única instância do servidor. Criar um cluster de banco de dados envolve criar os diretórios onde os dados do banco de dados serão armazenados, gerar as tabelas do catálogo compartilhado e criar os bancos de dados template1
e postgres
.
O banco de dados template1
é uma espécie de modelo usado para criar novos bancos de dados; tudo o que é armazenado em template1
, até mesmo objetos adicionados por você, será colocado em novos bancos de dados quando eles forem criados. O banco de dados postgres
é um banco de dados padrão projetado para uso por usuários, utilitários e aplicativos de terceiros.
O pacote Postgres que instalamos no passo anterior vem com um script útil chamado postgresql-setup
, que auxilia na administração de baixo nível do cluster de banco de dados. Para criar um cluster de banco de dados, execute o script usando sudo
e com a opção --initdb
:
Você verá a seguinte saída:
Output * Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Agora, inicie o serviço PostgreSQL usando systemctl
:
Em seguida, utilize systemctl
mais uma vez para habilitar o serviço para inicialização sempre que o servidor for reiniciado:
Isso resultará na seguinte saída:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
Agora que o PostgreSQL está em funcionamento, vamos aprender a utilizar roles para entender como o Postgres funciona e como ele difere de sistemas de gerenciamento de banco de dados semelhantes que você pode ter utilizado no passado.
Passo 3 — Utilizando Roles e Bancos de Dados no PostgreSQL
O PostgreSQL utiliza um conceito chamado roles para lidar com autenticação e autorização de clientes. De certa forma, eles são semelhantes a contas regulares no estilo Unix, mas o Postgres não faz distinção entre usuários e grupos e prefere o termo mais flexível “role”.
Após a instalação, o Postgres é configurado para usar autenticação ident, o que significa que associa roles do Postgres com uma conta correspondente no sistema Unix/Linux. Se uma role existe no Postgres, um nome de usuário do Unix/Linux com o mesmo nome pode fazer login como essa role.
O procedimento de instalação criou uma conta de usuário chamada postgres que está associada à função padrão postgres
. Para usar o PostgreSQL, você pode fazer login nessa conta.
Há algumas maneiras de usar essa conta para acessar o prompt do PostgreSQL.
Alternando para a Conta postgres
Alternar para a conta postgres no seu servidor digitando:
Agora você pode acessar imediatamente o prompt do Postgres digitando:
Isso irá conectá-lo ao prompt do PostgreSQL e, a partir daqui, você está livre para interagir com o sistema de gerenciamento de banco de dados imediatamente.
Saia do prompt do PostgreSQL digitando:
Isso o trará de volta ao prompt de comando do Linux da conta postgres. Agora retorne para sua conta original com o seguinte:
Acessando um Prompt do Postgres Sem Alternar de Contas
Você também pode executar comandos com a conta postgres diretamente usando sudo
.
Por exemplo, no exemplo anterior, você foi instruído a acessar o prompt do Postgres primeiro mudando para o usuário postgres e depois executando psql
para abrir o prompt do Postgres. Como alternativa, você pode fazer isso em um único passo executando o comando único psql
como usuário postgres com sudo
, assim:
Isso irá fazer login diretamente no Postgres sem o intermediário bash
shell.
Novamente, você pode sair da sessão interativa do Postgres digitando:
Neste passo, você usou a conta postgres para acessar o prompt psql
. Mas muitos casos de uso exigem mais de uma função do Postgres. Continue lendo para aprender como configurar novas funções.
Passo 4 — Criando uma Nova Função
Atualmente, você só tem a função postgres configurada no banco de dados. Você pode criar novas funções a partir da linha de comando com o comando createrole
. A flag --interactive
irá solicitar o nome da nova função e também perguntar se ela deve ter permissões de superusuário.
Se você estiver logado como a conta postgres, você pode criar um novo usuário digitando:
Se, em vez disso, você preferir usar sudo
para cada comando sem mudar de sua conta normal, digite:
O script solicitará algumas escolhas e, com base em suas respostas, executará os comandos Postgres necessários para criar um usuário de acordo com suas especificações. Para este tutorial, crie uma função chamada sammy e dê a ela privilégios de superusuário ao inserir y
quando solicitado:
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Você pode obter mais controle passando algumas bandeiras adicionais. Confira as opções consultando a página man
para createuser
:
Sua instalação do Postgres agora possui uma nova função, mas você ainda não adicionou nenhum banco de dados. A próxima seção descreve esse processo.
Passo 5 — Criando um Novo Banco de Dados
Outra suposição que o sistema de autenticação do Postgres faz por padrão é que, para qualquer função usada para fazer login, essa função terá um banco de dados com o mesmo nome ao qual pode acessar.
Isso significa que se o usuário que você criou na última seção se chama sammy, essa função tentará se conectar a um banco de dados que também é chamado de sammy
por padrão. Você pode criar tal banco de dados com o comando createdb
.
Se você estiver logado como a conta postgres, você digitaria algo como:
Se, em vez disso, você preferir usar sudo
para cada comando sem mudar de sua conta normal, você digitaria:
Essa flexibilidade oferece múltiplos caminhos para criar bancos de dados conforme necessário.
Agora que você criou um novo banco de dados, você vai fazer login nele com sua nova função.
Passo 6 — Abrindo um Prompt do Postgres com a Nova Função
Para fazer login com autenticação baseada em ident, você precisará de um usuário Linux com o mesmo nome que sua função e banco de dados do Postgres.
Se você não tiver um usuário Linux correspondente disponível, pode criar um com o comando adduser
. Você terá que fazer isso a partir da sua conta não root com privilégios de sudo
(ou seja, não conectado como o usuário postgres):
Uma vez que esta nova conta estiver disponível, você pode alternar e então se conectar ao banco de dados digitando primeiro:
Ou, você pode fazer isso inline:
Este comando fará o login automaticamente.
Se você quiser que seu usuário se conecte a um banco de dados diferente, pode fazer isso incluindo a bandeira -d
e especificando o banco de dados, assim:
Depois de fazer login, você pode verificar suas informações de conexão atuais digitando:
Isso mostrará a seguinte saída:
OutputYou 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 não padrão ou com usuários não padrão.
Depois de conectar ao seu banco de dados, agora você pode tentar criar e excluir tabelas.
Passo 7 — Criando e Excluindo Tabelas
Agora que você sabe como se conectar ao sistema de banco de dados PostgreSQL, pode aprender algumas tarefas básicas de gerenciamento do Postgres.
Primeiro, crie uma tabela para armazenar alguns dados. Como exemplo, você fará uma tabela que descreve algum equipamento de parquinho.
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)
);
Esses comandos dão à tabela um nome e, em seguida, definem as colunas, bem como o tipo de coluna e o comprimento máximo dos dados do campo. Você também pode opcionalmente adicionar restrições de tabela para cada coluna.
Para fins de demonstração, crie uma tabela como esta:
Este comando criará uma tabela que inventaria equipamentos de parquinho. Ele começa com um ID de equipamento, que é do tipo serial
. Este tipo de dados é um número autoincrementado. Você também deu a esta coluna a restrição de PRIMARY KEY
, o que significa que os valores devem ser únicos e não nulos.
Para duas das colunas (equip_id
e install_date
), o comando não especifica um comprimento de campo. Isso ocorre porque alguns tipos de coluna não exigem um comprimento definido, pois o comprimento é implicito pelo tipo.
As próximas duas linhas criam colunas para o tipo
e cor
do equipamento, respectivamente, cada uma das quais não pode estar vazia. A linha seguinte cria uma coluna localização
e uma restrição que exige que o valor seja um dos oito valores possíveis. A última linha cria uma coluna de data que registra a data em que você instalou o equipamento.
Você pode ver sua nova tabela digitando:
Isso mostrará a seguinte saída:
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Sua tabela de playground está aqui, mas também há algo chamado playground_equip_id_seq
que é do tipo sequência
. Isso é uma representação do tipo serial
que você deu para sua coluna equip_id
. Isso mantém o controle do próximo número na sequência e é criado automaticamente para colunas desse tipo.
Se você quiser ver apenas a tabela sem a sequência, pode digitar:
Isso resultará no seguinte:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Neste passo, você criou uma tabela de exemplo. No próximo passo, você tentará adicionar, consultar e excluir entradas nessa tabela.
Passo 8 — Adicionando, Consultando e Excluindo Dados em uma Tabela
Agora que você tem uma tabela, pode inserir alguns dados nela.
Como exemplo, adicione um escorregador e um balanço chamando a tabela na qual você deseja adicionar, nomeando as colunas e depois fornecendo dados para cada coluna, como este:
Você deve ter cuidado ao inserir os dados para evitar alguns erros comuns. Por exemplo, não envolva os nomes das colunas entre aspas, apenas os valores das colunas.
Outra coisa a ter em mente é que você não deve inserir um valor para a coluna equip_id
. Isso ocorre porque ele é gerado automaticamente sempre que uma nova linha na tabela é criada.
Recupere as informações que você adicionou digitando:
Você verá a seguinte saída:
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 escorregador no playground quebrar e você tiver que removê-lo, você também pode remover a linha da sua tabela digitando:
Consulte a tabela novamente:
Você verá o seguinte:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Observe que seu escorregador não faz mais parte da tabela.
Agora que você adicionou e excluiu entradas em sua tabela, pode tentar adicionar e excluir colunas.
Etapa 9 — Adicionando e Excluindo Colunas de uma Tabela
Após criar uma tabela, você pode modificá-la para adicionar ou remover colunas. Adicione uma coluna para mostrar a última visita de manutenção para cada equipamento digitando:
Se você visualizar as informações da sua tabela novamente, verá que a nova coluna foi adicionada (mas nenhum dado foi inserido):
Você verá o seguinte:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Se você perceber que sua equipe de trabalho usa uma ferramenta separada para acompanhar o histórico de manutenção, você pode excluir a coluna digitando:
Isso exclui a coluna last_maint
e quaisquer valores encontrados nela, mas deixa todos os outros dados intactos.
Depois de ter adicionado e excluído colunas, você pode tentar atualizar os dados existentes na etapa final.
Passo 10 — Atualizando Dados em uma Tabela
Até agora, você aprendeu como adicionar registros a uma tabela e como excluí-los, mas este tutorial ainda não cobriu como modificar entradas existentes.
Você pode atualizar os valores de uma entrada existente consultando o registro desejado e definindo a coluna para o valor que deseja usar. Você pode consultar o registro swing
(isso corresponderá a cada swing em sua tabela) e mudar sua cor para vermelho
:
Você pode verificar se a operação foi bem-sucedida consultando os dados novamente:
Você verá o seguinte:
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á configurado com o PostgreSQL no seu servidor Rocky Linux 8. No entanto, ainda há muito mais a aprender com o Postgres. Aqui estão mais alguns guias que cobrem como usar o Postgres:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-rocky-linux-8