1. INDEX


  1. Resumo do conteúdo

  2. Introdução

    1. Objetivo.
    2. Pre-requisitos.
    3. Benefícios.
    4. Desvantagens.
  3. Conteúdo estudado.

    1. Instalar postgreSQL no Linux Debian ou derivados
    2. Aplicativos Clientes disponível do shell do linux
    3. Aplicativo Cliente GUI dbeaver
    4. Como trocar a senha do banco postgreSQL no linux caso se esqueça?
  4. Referências globais.

  5. Histórico.

2. CONTEÚDO


  1. Resumo do conteúdo:

    1. Este documento descreve passo a passo como instalar o postgreSQL no linux Mint LMDE 4.
    2. Faz um resumo do objetivo, dos benefícios e desvantagens do postgreSQL.
    3. Mostra a pasta onde o postgreSQL mantém suas configurações.
    4. Descreve os parâmetros para conectar-se com o Banco de Dados.
    5. Descreve os clientes cluterdb e createdb.
  2. Introdução

    1. Objetivo:

      1. O PostgreSQL é um banco de dados livre criado pela Universidade da Califórnia em Berkeley e tem mais de 30 anos de desenvolvimento ativo.
      2. Sua licença é mais flexível do que a licença do mysql porque o mysql é da Oracle e o PostgreSQL é da comunidade.
      3. O mysql por ter sua licença restritiva a comunidade criou o MariaDB e com ele veio as incompatibilidades do projetos existentes. O Lazarus não consegue conectar-se ao mariaDB e por isso estou estudando o PostgreSQL.
      4. [🔙]
    2. Pre-requisitos:

      1. Linguagem sql
      2. sistema operacional linux.
      3. [🔙]
    3. Benefícios:

      1. Banco de dados cliente servidor, robusto, escalável e sua licença é BSD.
      2. [🔙]
    4. Desvantagens.

      1. Não vi desvantagem em relação ao mysql.
      2. Para uma aplicação mono-usuário é mais difícil de instalar e configurar. O SqLite á mais indicado para essa tarefa.
      3. [🔙]
  3. Conteúdo estudado

    1. Instalar postgreSQL no Linux Debian ou derivados)

      1. Código ShellScript para instalar

          # Instalar o servidor           
          sudo apt install postgresql
        
          # Instalar a aplicação cliente:
          sudo apt install postgresql-client
        
          # Client sql aceita vários bancos de dados Link: https://dbeaver.io/
          # https://en.wikipedia.org/wiki/DBeaver
          # [dbeaver.io/download](https://dbeaver.io/download/)
        
          # Facilidades adicionais para o PostgreSQL : https://www.postgresql.org/docs/11/contrib.html
          # Não deve ser instalado porque quero o básico do banco de dados para manter compatibilidade com os outros.
          sudo apt install postgresql-contrib
        
          # Configure o Firewall (Opcional):
          #    Se estiver usando um firewall, abra a porta 3389, que é a porta padrão para o protocolo RDP:
            sudo ufw allow 5432/tcp
            sudo ufw reload
        
          # Selecionando o usuário postgres
            sudo su postgres
        
          # entrar no prompt do Postgres
            psql
         
          # visualizando a lista dos bancos de dados no programa psql
            \l
        
          # Definindo senha masterkey para o usuário Postgres
            \password
        
          # Para sair do programa psql
            \q
        
          # Sair do usuário postgres
            exit
          
          # Executar psql estando dentro do usuário corrente.
            psql -Upostgres -hlocalhost
        
        
      2. Configurações para que o postgres seja acessado fora da rede local:

        1. Execute os passos abaixo para definir o método de autenticação do banco:

          
             # Parar o banco de dados postgres
                sudo systemctl stop postgresql
          
                sudo xed /etc/postgresql/14/main/pg_hba.conf
          
             # adicione no final do arquivo pg_hba.conf a linha abaixo e salve e saia do editor
                host all  all 0.0.0.0/0 scram-sha-256
             
             # Inicia o banco de dados postgres
                sudo systemctl start postgresql 
          
          1. Nota
            1. Onde 0.0.0.0/0 é o intervalo de endereços que aceitará conexão de outros IPs que não seja localhost.
            2. A autenticação do cliente é controlada pelo arquivo pg_hba.conf veja mais...
            3. Métodos de autenticação
              1. Autenticação por senha são:
                1. scram-sha-256

                  1. O método scram-sha-256 executa a autenticação SCRAM-SHA-256, conforme descrito em RFC 7677. É um esquema de desafio-resposta que evita a detecção de senhas em conexões não confiáveis ​​e oferece suporte ao armazenamento de senhas no servidor em um formato criptografado com hash que é considerado seguro.
                2. md5

                  1. Suporta senhas criptografadas armazenadas no catálogo do sistema pg_shadow.
                  2. O método md5 usa um mecanismo personalizado de resposta a desafios e menos seguro. Ele evita a detecção de senhas e evita o armazenamento de senhas no servidor em texto simples, mas não oferece proteção se um invasor conseguir roubar o hash da senha do servidor. Além disso, o algoritmo hash MD5 hoje em dia não é mais considerado seguro contra determinados ataques.
                  3. O método md5 não pode ser usado com o recurso db_user_namespace.
                  4. Para facilitar a transição do método md5 para o método SCRAM mais recente, se md5 for especificado como um método em pg_hba.conf mas a senha do usuário no servidor estiver criptografada para SCRAM (veja abaixo), então a autenticação baseada em SCRAM será escolhida automaticamente.
                3. password

                  1. O método password envia a senha em texto não criptografado e, portanto, é vulnerável à detecção de senha “sniffing< /span>password poderá ser usado com segurança. (Embora a autenticação por certificado SSL possa ser uma escolha melhor se depender do uso de SSL). ataques. Deve sempre ser evitado, se possível. Se a conexão estiver protegida por criptografia SSL, então ”.
              2. Notas:
                1. O cliente dbeaver-ce não aceita o método md5, crypt e password
                2. A senha de cada usuário do banco de dados é armazenada no pg_authid catálogo do sistema.
        2. Definir no arquivo /etc/postgresql/14/main/postgresql.conf os parâmetros:

          1. listen_addresses : Especifica os endereços TCP/IP nos quais o servidor deve escutar conexões de aplicativos cliente.

            1. O valor assume a forma de uma lista separada por vírgulas de nomes de host e/ou endereços IP numéricos.

            2. A entrada especial * corresponde a todas as interfaces IP disponíveis.

            3. A entrada 0.0.0.0 permite escutar todos os endereços IPv4

            4. A entrada :: permite escutar todos os endereços IPv6.

            5. Nota:

              1. Se a lista estiver vazia, o servidor não escuta nenhuma interface IP; nesse caso, apenas soquetes de domínio Unix podem ser usados ​​para conectar-se a ele.
              2. Se a lista não estiver vazia, o servidor será iniciado se puder escutar pelo menos um endereço TCP/IP.
              3. Um aviso será emitido para qualquer endereço TCP/IP que não possa ser aberto.
              4. O valor padrão é localhost , que permite apenas conexões locais de “loopback” TCP/IP.
              5. O padrão é 'localhost'; use '*' para todos (a alteração requer reinicialização) e essa lista de endereços é separados por vírgula
            6. Exemplos:

                 # Só aceita conexão local
                   listen_addresses = 'localhost'
              
                 # Aceitas conexão de todos os IPS IPv4 e IPv6   
                 listen_addresses = '*'
              
                 # Aceitas conexão do localhost e do ip 192.168.15.2
                 listen_addresses = 'localhost,192.168.15.2'
              
              
            7. O arquivo pode ser editado usando os comandos abaixo:

              
                 # Parar o banco de dados postgres
                   sudo systemctl stop postgresql
              
                 # Edita o arquivo postgreSQL.conf   
                   sudo xed /etc/postgresql/14/main/postgresql.conf
              
                 # Inicia o banco de dados postgres
                   sudo systemctl start postgresql
              
              
            8. Referências:

              1. endereços_de_escuta
              2. client-authentication.html
          2. port = 5432 (change requires restart)

      3. Dados para conexão com banco de dados postgres

        1. DataBaseName : postgres
        2. HostName : 127.0.0.1 # Obs: a porta 5432 não precisa informar no Lazarus quando for máquina local.
        3. UserName : postgres
        4. Password : masterkey
      4. A versão Linux Mint LMDE 4 Debian cria os arquivos de configurações na pasta: /etc/postgresql/14/main

        1. A instalação cria o arquivo /etc/postgresql/14/main/postgresql.conf com os parâmetros básico do postgresql.

          1. Parâmetros importantes que devem se alterados para atender a demanda:

            1. data_directory = '/var/lib/postgresql/14/main' Nota: Pode ser qualquer outro lugar.
            2. data_directory = '/home/paulosspacheco/Documentos/db/postgresql'
              1. Nota:
                1. É necessário mover o conteúdo /var/lib/postgresql/14/main para /home/paulosspacheco/Documentos/db/postgresql usando o seguinte comando:

                    # Parar o banco de dados postgres
                    sudo systemctl stop postgresql
                  
                    # Entrar no arquivo abaixo e trocar comentar a linha data_directory = '/var/lib/postgresql/14/main' 
                    # Acrescentar a linha:  data_directory = '/home/paulosspacheco/Documentos/db/postgresql'  
                    # Após as alterações acima salvar o arquivo /etc/postgresql/14/main/postgresql.conf
                    sudo xed /etc/postgresql/14/main/postgresql.conf
                  
                    # Clonar a pasta /var/lib/postgresql/14/main para a pasta /home/paulosspacheco/Documentos/db/postgresql
                    sudo rsync -av /var/lib/postgresql/14/main /home/paulosspacheco/Documentos/db/postgresql
                  
                    # Inicia o banco de dados postgres
                    sudo systemctl start postgresql
                  
          2. Como reiniciar o servidor postgres:

            
              # comando 01
                sudo /etc/init.d/postgresql restart
            
              # ou
                sudo service postgresql restart
                
            
          3. Como parar o servidor postgres:

            
              sudo /etc/init.d/postgresql stop
            
            
          4. Como iniciar o servidor postgres:

            
              sudo /etc/init.d/postgresql start
            
            
        2. Arquivo de log que deve ser apagado com frequência:

          1. /var/lib/pgsql/data/pg_log
    2. Referências:

      1. Vídeo aula de como instalar o postgreSQL no linux

      2. Como instalar outras versões no linux

      3. Site oficial do PostgreSQL

      4. Configuração pós-instalação - Bibliotecas compartilhadas

      5. Manual básico para principiantes

      6. Documentação → PostgreSQL 16

      7. [🔙]

    3. Aplicativos Clientes disponível do shell do linux

      1. clusterdb - um cluster de banco de dados PostgreSQL.

        1. Código ShellScript

          # Para agrupar uma única tabela foo em um banco de dados chamado xyzzy :
          clusterdb --table foo xyzzy
          
          
      2. createdb - Cria um banco de dados PostgreSQL

        1. Código ShellScript

            # conecta-se ao usuário postgres:
            su postgres
          
            # Cria o banco de dados teste:
            createdb teste
          
            # Para criar o banco de dados teste usando o servidor em host localhost, porta 5000, usando o template0 banco de dados modelo, aqui está o comando de linha de comando e o comando SQL equivalente:
            createdb -p 5000 -h localHost -T template0 -e teste # CREATE DATABASE teste TEMPLATE template0;
          
          
          
      3. [🔙]

    4. Aplicativo Cliente GUI dbeaver

      1. O DBeaver Community Edition (DBeaver CE) é uma ferramenta de gerenciamento de banco de dados relacional de código aberto. Ele oferece suporte a vários bancos de dados, como MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server, e muitos outros. O DBeaver CE é uma versão gratuita e de código aberto da ferramenta, projetada para ser usada por desenvolvedores, administradores de banco de dados e qualquer pessoa envolvida no gerenciamento e manipulação de bancos de dados.

      2. Principais características do DBeaver CE:

        1. Conectividade com Múltiplos Bancos de Dados: Oferece suporte a uma ampla variedade de sistemas de gerenciamento de banco de dados, permitindo que os usuários se conectem a diferentes bancos de dados a partir de uma única interface.
        2. Interface Gráfica Intuitiva: Possui uma interface de usuário gráfica intuitiva que facilita o desenvolvimento, gerenciamento e consulta de bancos de dados.
        3. Editor SQL: Inclui um editor SQL poderoso com realce de sintaxe, conclusão automática e outras funcionalidades que facilitam a escrita e execução de consultas SQL.
        4. Gerenciamento de Metadados: Permite a visualização e edição de metadados do banco de dados, como tabelas, índices, procedimentos armazenados, entre outros.
        5. Exportação e Importação de Dados: Facilita a transferência de dados entre diferentes fontes, com suporte a várias opções de exportação e importação.
        6. Visualização de Dados: Oferece recursos visuais para a visualização de dados, incluindo gráficos e ferramentas de exploração de dados.
        7. Suporte a Plugins: Permite a extensão de funcionalidades por meio de plugins, proporcionando flexibilidade para atender a diferentes necessidades.
      3. O DBeaver CE é uma escolha popular devido à sua versatilidade e ao fato de ser gratuito e de código aberto. No entanto, é importante observar que existem versões comerciais do DBeaver (DBeaver EE) que oferecem recursos adicionais e suporte aprimorado, mas a versão Community Edition é uma opção robusta para muitos desenvolvedores e administradores de banco de dados.

      4. Como instalar o cliente GUI postgreSQL dbeaver:

        1. Baixar pacote Dbeaver em dbeaver.io
        2. Instalar pacote.
          1. Linux Debian ou derivados

            1. Baixar pacote Linux Debian package (installer)

              
                 cd ~Download
                 sudo apr install ./dbeaver-ce_23.3.0_amd64.deb
              
              
            2. Obs:

              1. Observe nome do arquivo ao clicar no link para download porque pode mudar o número da versão.
          2. MacOS

            
               brew install --cask dbeaver-community
            
            
    5. Como trocar a senha do banco postgreSQL no linux caso se esqueça?

      1. Passo 01:

        1. Mudar o tipo de acesso no arquivo pg_hba.conf:

          
             # Parar o banco de dados postgres
             sudo systemctl stop postgresql
          
             sudo xed /etc/postgresql/14/main/pg_hba.conf
          
             # Procurar  a linha  host all  all localhost scram-sha-256 e troque para
             # host all  all localhost trust
                
             # Inicia o banco de dados postgres
             sudo systemctl start postgresql                
          
          
      2. Passo 02

        1. Entrar no usuário postgres, executar programa psql e alterar a senha;

          
             # logar-se ao usuário postgres: 
               sudo su postgres
          
             # Executar cliente psql:
               psql -U postgres;
          
             # Alterar a senha:
               ALTER ROLE postgres PASSWORD 'nova senha';
          
             # Sair do cliente psql
             \q
          
             # sair do usuário postgres
          
          
      3. Passo 03:

        1. Retornar ao tipo de acesso original no arquivo pg_hba.conf:

          
             # Parar o banco de dados postgres
             sudo systemctl stop postgresql
          
             sudo xed /etc/postgresql/14/main/pg_hba.conf
          
             # Procurar  a linha host all  all localhost trust  e troque para
             # host all  all localhost scram-sha-256
                
             # Inicia o banco de dados postgres
             sudo systemctl start postgresql                
             
          
  4. REFERÊNCIAS GLOBAIS

    1. Documentação do PostgreSQL 11.15

    2. Capítulo 24. Tarefas de manutenção de rotina do banco de dados

    3. Aplicativo Cliente DBeaver 22.3.2

    4. Autenticação do cliente postgreSQL

    5. POSTGRESQL - MÉTODOS DE AUTENTICAÇÃO DE SENHA

    6. [🔙]

  5. HISTÓRICO

    1. 14/12/2023
    2. 14/12/2023
      • Criar este documento baseado no modelo03.md ;

      • Escrever tópico Objetivos;

      • Escrever tópico Pre-requisitos

      • Escrever tópico Benefícios

      • Escrever tópico desvantagens

      • Escrever tópico Instalar no linux Mint LMDE 4

      • Escrever tópico Aplicativos Clientes disponível do shell do linux

      • Escrever tópico Aplicativo Cliente GUI dbeaver

      • Escrever tópico Referências

      • Atualizar o histórico deste documento.

      • Testar este documento depois após uma semana de concluído.

      • [🔙]

🔝🔝

🔝🔝