Configuração inicial necessária após a instalação do PostgreSQL no CentOS e antes do arranque.


Data de Publicação:17 de Dezembro de 2020.



INFOMARTION > Configuração inicial necessária após a instalação do PostgreSQL no CentOS e antes do arranque.

Visão geral.

Este é o procedimento de configuração inicial necessário para instalar e iniciar o PostgreSQL no CentOS. A informação baseia-se no pressuposto de que o CentOS7 é utilizado. A secção sobre segurança está também incluída.

O PostgreSQL é recomendado por ser gratuito e altamente funcional. Ouvi dizer que as funções do PostgreSQL costumavam ser lentas, mas as recentes melhoraram e são mais rápidas.

As versões são as seguintes.

Versão CentOS7.6 (1810)
Versão do PostgreSQL9.2.24

Tabela de Conteúdos

  1. instalar
  2. Detalhes de configuração
  3. resumo

1. instalar

Esta secção descreve o procedimento para a instalação do PostgreSQL.

1-1. Instalar o PostgreSQL

Executar a instalação do PostgreSQL através do comando yum. Efectuar o trabalho como utilizador root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Detalhes de configuração

Esta secção descreve a configuração até ao início do PostgreSQL.

2-1. Criar um utilizador dedicado do PostgreSQL.

Eu queria criar um utilizador dedicado para manipular o PostgreSQL (utilizar comandos psql), mas o utilizador já tinha sido criado. Lembro-me de criar utilizadores quando os criei no passado, por isso talvez a especificação tenha mudado.

Tente mudar para um utilizador com o seguinte comando.

[root@hostname ~]# su - postgres

Como algumas pessoas podem estar a utilizar uma versão mais antiga do PostgreSQL, deve ser mencionado que o procedimento para definir variáveis de ambiente alterando o seguinte ".bashrc" também já não é necessário.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

O PGDATA padrão para utilizadores postgres parece agora ser '/var/lib/pgsql/dados'. É descrito como referindo-se a "/usr/lib/systemd/systemd/system/postgresql.service".

2-2. Preparação de dados PostgreSQL

Criar dados PostgreSQL. A codificação é UNICODE. O directório "/var/lib/pgsql/dados" foi criado por defeito, mas aqueles que não o fizeram também são convidados a criar uma pasta.

-bash-4.2$ initdb --encoding=UNICODE

Como "PGDATA=/var/lib/pgsql/data" está definido em "/usr/lib/systemd/systemd/postgresql.service", "initdb --encoding=UNICODE" irá construir um DB em "/var/lib/pgsql/ data/", o BD é construído em "/var/lib/pgsql/data/".

2-3. Modificar o ficheiro de configuração

Permitir o acesso de endereços IP ao PostgreSQL. Criar o sistema de modo a que seja autenticado por senha para acesso não-local.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

Modificar 'postgresql.conf' como se segue.

postgresql.conf【Antes da mudança】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【após a mudança】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

Para acrescentar a isto, uma vez que é uma parte importante da segurança, se colocar esta configuração, poderá aceder ao sítio a partir de qualquer IP. Se o IP a ser acedido for fixo, por favor indicar o IP fixo.

Esta configuração é necessária ao iniciar sessão a partir de um servidor que não aquele onde o PostgreSQL está instalado, por exemplo, pgadmin. Esta configuração não é necessária se iniciar a sessão no servidor e executar o comando psql. (uma vez que a ligação tem origem em si mesmo (localhost))

Este é um importante cenário de segurança, por isso minimiza ao máximo o número de utilizadores que podem aceder a ele.

Em seguida, modificar 'pg_hba.conf'.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Acrescentar as seguintes informações no final do documento.

pg_hba.conf


#Autenticação por senha a partir do exterior.
host    all             all             0.0.0.0/0            md5

Ao incluir esta configuração, é necessária uma palavra-passe quando a ligação é feita a partir do exterior. Estas áreas podem ser graves falhas de segurança se não forem montadas ou montadas incorrectamente, por isso, por favor, instale-as com os últimos cuidados.

2-4. verificação do bootstrap check

Agora que a pré-configuração está completa, verifique se o PostgreSQL começa. Uma vez que a BD foi construída como utilizador postgres, mude para o utilizador postgres antes de começar.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

Depois de o PostgreSQL ter sido iniciado com sucesso, verificar se o comando psql funciona sem problemas. Executar o comando psql como utilizador postgres.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

Não há problema se os resultados acima referidos forem devolvidos.

2-5. Configuração de arranque automático

Embora não seja obrigatório, é difícil iniciar o PostgreSQL sempre que o servidor é reiniciado, por isso é configurado para que o PostgreSQL arranque automaticamente quando o servidor é iniciado. Também se regista para o comando systemctl. Note que este procedimento é para o CentOS7, por isso, se estiver a utilizar algo que não o CentOS7, terá de usar o comando Service para lidar com isto.

Verificar se existe '/usr/lib/systemd/systemd/system/postgresql.service'. Caso contrário, criar 'postgresql.service' utilizando o seguinte procedimento. Funciona como utilizador root.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

É fornecida a seguinte informação.

postgresql.service


[Unit]
#Descrição.
Description=PostgreSQL
#Controlo pré e pós-execução.
#Before=xxx.service
After=network.target

[Service]
#Designação do utilizador e do grupo
User=postgres
Group=postgres
#Uma vez activado, definir o estado para Activado.
Type=oneshot
RemainAfterExit=yes
#Iniciar, parar e recarregar.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Configurações equivalentes ao nível de execução 3.
WantedBy=multi-user.target

A seguir, registar-se com o comando systemctl.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. Acrescentar um utilizador administrativo ao PostgreSQL

Criar um utilizador a ser utilizado dentro da aplicação PostgreSQL, separado do utilizador que opera o PostgreSQL a partir do Linux. Este é o utilizador quando opera com o pgadmin, etc. Gostaria de alterar a password do utilizador postgres que existe por defeito e utilizá-la.

Executar o seguinte comando como utilizador postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password 'senha (de computador)';
postgres=# \q

※Introduza a palavra-passe que deseja definir no campo 'Palavra-passe'.

2-7. Perfuração de firewalls

Permitir o acesso à porta PostgreSQL porque a firewall (iptables para CentOS6 e anteriores) só permite o acesso ssh por defeito no CentOS7. Adicionar também a opção 'permanente' para tornar a configuração permanente.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Se diz "portos: 5432/tcp", não há problema.

Acesso através de pgadmin. Deverá ser capaz de iniciar sessão como utilizador postgres com a palavra-chave que acabou de definir.

3. resumo

Descrevemos a configuração inicial necessária quando o PostgreSQL é instalado. A construção inicial do PostgreSQL pode ser uma luta, por isso, por favor consulte esta secção.

Obrigado por ter observado até ao fim.