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 CentOS | 7.6 (1810) |
---|---|
Versão do PostgreSQL | 9.2.24 |
Tabela de Conteúdos
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.
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.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# 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.
#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.
[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.
■INFORMATION
Por favor clique aqui para ir para a página superior de INFORMAÇÃO.
■PROFILE
Por favor clique aqui para um perfil.
■Detalhes de contacto.