Initiële configuratie vereist na de installatie van PostgreSQL op CentOS en vóór het opstarten.


Datum van publicatie:17 december 2020.



INFOMARTION > Initiële configuratie vereist na de installatie van PostgreSQL op CentOS en vóór het opstarten.

Overzicht.

Dit is de initiële configuratieprocedure die nodig is om PostgreSQL op CentOS te installeren en te starten. De informatie is gebaseerd op de veronderstelling dat CentOS7 wordt gebruikt. Het gedeelte over veiligheid is ook opgenomen.

PostgreSQL wordt aanbevolen omdat het gratis is en zeer functioneel. Ik heb gehoord dat PostgreSQL functies vroeger traag waren, maar dat recente functies verbeterd zijn en sneller zijn.

De versies zijn als volgt.

CentOS versie7.6 (1810)
Versie van PostgreSQL9.2.24

Inhoudsopgave

  1. installeer
  2. Setup details
  3. samenvatting

1. installeer

Deze sectie beschrijft de procedure voor het installeren van PostgreSQL.

1-1. PostgreSQL installeren

Voer de PostgreSQL installatie uit met behulp van het yum commando. Voer het werk uit als root gebruiker.

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

2. Setup details

Deze sectie beschrijft de configuratie tot aan het opstarten van PostgreSQL.

2-1. Maak een speciale PostgreSQL gebruiker aan.

Ik wilde een speciale gebruiker aanmaken om PostgreSQL te manipuleren (gebruik psql commando's), maar de gebruiker was al aangemaakt. Ik herinner me dat ik in het verleden gebruikers heb aangemaakt, dus misschien is de specificatie veranderd.

Probeer over te schakelen naar een gebruiker met het volgende commando.

[root@hostname ~]# su - postgres

Aangezien sommige mensen mogelijk een oudere versie van PostgreSQL gebruiken, moet worden vermeld dat de procedure voor het instellen van omgevingsvariabelen door het volgende ".bashrc" te wijzigen, ook niet langer nodig is.

.bashrc


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

De standaard PGDATA voor postgres gebruikers lijkt nu '/var/lib/pgsql/data' te zijn. Het wordt beschreven als verwijzend naar "/usr/lib/systemd/system/postgresql.service".

2-2. PostgreSQL gegevens voorbereiding

Maak PostgreSQL gegevens. De codering is UNICODE. De map "/var/lib/pgsql/data" is standaard aangemaakt, maar wie dat niet heeft gedaan wordt ook verzocht een map aan te maken.

-bash-4.2$ initdb --encoding=UNICODE

Aangezien "PGDATA=/var/lib/pgsql/data" is ingesteld in "/usr/lib/systemd/system/postgresql.service", zal "initdb --encoding=UNICODE" een DB bouwen onder "/var/lib/pgsql/ data/", de DB is gebouwd onder "/var/lib/pgsql/data/".

2-3. Wijzigen van het configuratiebestand

Sta IP adressen toe om PostgreSQL te benaderen. Stel het systeem zo in dat het geauthenticeerd is met een wachtwoord voor niet-lokale toegang.

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

Wijzig 'postgresql.conf' als volgt.

postgresql.conf【Voor de verandering】


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

# - Connection Settings -

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

postgresql.conf【na de verandering】


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

# - Connection Settings -

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

Om hieraan toe te voegen dat dit een belangrijk onderdeel is van de beveiliging: als u deze instelling invoert, kunt u vanaf elk IP-adres toegang krijgen tot de site. Indien het IP waartoe toegang moet worden verkregen vast is, gelieve het vaste IP te vermelden.

Deze instelling is nodig wanneer u inlogt vanaf een andere server dan die waarop PostgreSQL is geïnstalleerd, bijv. pgadmin. Deze instelling is niet nodig als u inlogt op de server en het psql commando uitvoert. (aangezien de verbinding van hemzelf komt (localhost))

Dit is een belangrijke veiligheidsinstelling, dus beperk het aantal gebruikers dat er toegang toe heeft zo veel mogelijk.

Wijzig dan 'pg_hba.conf'.

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

Voeg de volgende informatie toe aan het einde van het document.

pg_hba.conf


#Wachtwoord authenticatie van buitenaf.
host    all             all             0.0.0.0/0            md5

Door deze instelling op te nemen, is een wachtwoord vereist bij verbinding van buitenaf. Deze gebieden kunnen ernstige veiligheidslekken zijn als ze niet of verkeerd zijn ingesteld, dus stel ze met de laatste zorg in.

2-4. opstartcontrole

Nu de voorconfiguratie voltooid is, controleer of PostgreSQL start. Aangezien de DB werd gebouwd als een postgres gebruiker, schakel over naar de postgres gebruiker alvorens te starten.

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

Nadat PostgreSQL met succes is gestart, controleer dan of het psql commando zonder problemen werkt. Voer het psql commando uit als de postgres gebruiker.

-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)

Het is OK als de bovenstaande resultaten worden geretourneerd.

2-5. Automatische opstart instelling

Hoewel het niet verplicht is, is het moeilijk om PostgreSQL te starten telkens als de server opnieuw wordt opgestart, dus wordt het zo geconfigureerd dat PostgreSQL automatisch start wanneer de server wordt opgestart. Het registreert ook op het systemctl commando. Merk op dat deze procedure is voor CentOS7, dus als u iets anders gebruikt dan CentOS7, zult u het Service commando moeten gebruiken om dit af te handelen.

Controleer of '/usr/lib/systemd/system/postgresql.service' bestaat. Zo niet, maak dan "postgresql.service" aan met de volgende procedure. Start als root gebruiker.

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

De volgende informatie wordt verstrekt.

postgresql.service


[Unit]
#Beschrijving.
Description=PostgreSQL
#Controle voor en na de uitvoering.
#Before=xxx.service
After=network.target

[Service]
#Aanwijzing gebruiker en groep
User=postgres
Group=postgres
#Eenmaal geactiveerd, zet de status op Geactiveerd.
Type=oneshot
RemainAfterExit=yes
#Starten, stoppen en herladen.
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]
#Runlevel 3 gelijkwaardige instellingen.
WantedBy=multi-user.target

Vervolgens, registreer met het systemctl commando.

[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. Een administratieve gebruiker toevoegen aan PostgreSQL

Maak een gebruiker aan die binnen de PostgreSQL applicatie gebruikt wordt, los van de gebruiker die PostgreSQL vanuit Linux bedient. Dit is de gebruiker wanneer gewerkt wordt met pgadmin, enz. Ik wil het wachtwoord veranderen van de postgres gebruiker die standaard bestaat en deze gebruiken.

Voer het volgende commando uit als de postgres gebruiker.

-bash-4.2$ psql
postgres=# alter role postgres with password '(computer) wachtwoord';
postgres=# \q

※Voer het wachtwoord in dat u wilt instellen in het veld "Wachtwoord".

2-7. Boren van firewalls

Geef toegang tot de PostgreSQL poort omdat de firewall (iptables voor CentOS6 en eerder) standaard alleen ssh toegang toestaat op CentOS7. Voeg ook de optie 'permanent' toe om de configuratie permanent te maken.

[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:

Als er 'poorten: 5432/tcp' staat, is het OK.

Toegang via pgadmin. U zou moeten kunnen inloggen als een postgres gebruiker met het wachtwoord dat u zojuist hebt ingesteld.

3. samenvatting

We hebben de initiële configuratie beschreven die nodig is wanneer PostgreSQL wordt geïnstalleerd. De initiële opbouw van PostgreSQL kan een worsteling zijn, dus raadpleeg deze sectie.

Bedankt voor het kijken tot het einde.