Den indledende konfiguration er påkrævet efter installation af PostgreSQL på CentOS og før opstart.


Udgivelsesdato:17. december 2020.



INFOMARTION > Den indledende konfiguration er påkrævet efter installation af PostgreSQL på CentOS og før opstart.

Oversigt.

Dette er den indledende konfigurationsprocedure, der kræves for at installere og starte PostgreSQL på CentOS. Oplysningerne er baseret på den antagelse, at der anvendes CentOS7. Afsnittet om sikkerhed er også medtaget.

PostgreSQL anbefales, da det er gratis og meget funktionelt. Jeg har hørt, at PostgreSQL-funktioner tidligere var langsomme, men at de seneste funktioner er blevet forbedret og er hurtigere.

Versionerne er som følger.

CentOS-version7.6 (1810)
Version af PostgreSQL9.2.24

Indholdsfortegnelse

  1. installere
  2. Detaljer om opsætning
  3. resumé

1. installere

Dette afsnit beskriver proceduren for installation af PostgreSQL.

1-1. Installation af PostgreSQL

Udfør PostgreSQL-installationen ved hjælp af yum-kommandoen. Udfør arbejdet som root-bruger.

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

2. Detaljer om opsætning

Dette afsnit beskriver konfigurationen frem til start af PostgreSQL.

2-1. Opret en dedikeret PostgreSQL-bruger.

Jeg ønskede at oprette en dedikeret bruger til at manipulere PostgreSQL (bruge psql-kommandoer), men brugeren var allerede oprettet. Jeg kan huske, at jeg oprettede brugere, da jeg oprettede dem tidligere, så måske er specifikationen ændret.

Prøv at skifte til en bruger med følgende kommando.

[root@hostname ~]# su - postgres

Da nogle personer muligvis bruger en ældre version af PostgreSQL, bør det nævnes, at proceduren for indstilling af miljøvariabler ved at ændre følgende ".bashrc" heller ikke længere er nødvendig.

.bashrc


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

Standard PGDATA for postgres-brugere ser nu ud til at være '/var/lib/pgsql/data'. Den beskrives som refererende til "/usr/lib/systemd/system/system/postgresql.service".

2-2. Forberedelse af PostgreSQL-data

Opret PostgreSQL-data. Kodningen er UNICODE. Mappen "/var/lib/pgsql/data" blev oprettet som standard, men de, der ikke har oprettet mappen, bliver også bedt om at oprette en mappe.

-bash-4.2$ initdb --encoding=UNICODE

Da "PGDATA=/var/lib/pgsql/data" er angivet i "/usr/lib/systemd/system/postgresql.service", vil "initdb --encoding=UNICODE" opbygge en DB under "/var/lib/pgsql/". data/", DB'en er bygget under "/var/lib/pgsql/data/".

2-3. Ændring af konfigurationsfilen

Tillad IP-adresser at få adgang til PostgreSQL. Konfigurer systemet, så det er password-autentificeret for ikke-lokal adgang.

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

Ændr 'postgresql.conf' som følger.

postgresql.conf【Før ændring】


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

# - Connection Settings -

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

postgresql.conf【efter ændringen】


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

# - Connection Settings -

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

For at tilføje dette, da det er en vigtig del af sikkerheden, kan du tilføje, at hvis du indstiller denne indstilling, vil du kunne få adgang til webstedet fra enhver IP. Hvis den IP, der skal tilgås, er fast, skal du angive den faste IP.

Denne indstilling er nødvendig, når du logger ind fra en anden server end den, hvor PostgreSQL er installeret, f.eks. pgadmin. Denne indstilling er ikke nødvendig, hvis du logger ind på serveren og kører kommandoen psql. (da forbindelsen stammer fra ham selv (localhost))

Dette er en vigtig sikkerhedsindstilling, så begræns antallet af brugere, der kan få adgang til den, så vidt muligt.

Ændr derefter "pg_hba.conf".

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

Tilføj følgende oplysninger i slutningen af dokumentet.

pg_hba.conf


#Adgangskodegodkendelse udefra.
host    all             all             0.0.0.0/0            md5

Ved at inkludere denne indstilling kræves der en adgangskode, når der oprettes forbindelse udefra. Disse områder kan være alvorlige sikkerhedshuller, hvis de ikke er opsat eller er opsat forkert, så du skal opsætte dem med den største omhu.

2-4. bootstrap-kontrol

Nu, hvor forkonfigurationen er færdig, skal du kontrollere, at PostgreSQL starter. Da DB'en blev bygget som en postgres-bruger, skal du skifte til postgres-brugeren, før du starter.

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

Når PostgreSQL er blevet startet, skal du kontrollere, at psql-kommandoen fungerer uden problemer. Kør psql-kommandoen som postgres-bruger.

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

Det er OK, hvis ovenstående resultater returneres.

2-5. Indstilling af automatisk opstart

Selv om det ikke er obligatorisk, er det svært at starte PostgreSQL hver gang serveren genstartes, så det er konfigureret således, at PostgreSQL starter automatisk, når serveren startes. Den registreres også i kommandoen systemctl. Bemærk venligst, at denne procedure er for CentOS7, så hvis du bruger noget andet end CentOS7, skal du bruge kommandoen Service til at håndtere dette.

Kontroller, om "/usr/lib/systemd/system/system/postgresql.service" findes. Hvis ikke, skal du oprette "postgresql.service" ved hjælp af følgende procedure. Kør som root-bruger.

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

Der gives følgende oplysninger.

postgresql.service


[Unit]
#Beskrivelse.
Description=PostgreSQL
#Kontrol før og efter udførelsen.
#Before=xxx.service
After=network.target

[Service]
#Betegnelse af brugere og grupper
User=postgres
Group=postgres
#Når den er aktiveret, skal du indstille status til Aktiveret.
Type=oneshot
RemainAfterExit=yes
#Start, stop og genindlæsning.
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 tilsvarende indstillinger.
WantedBy=multi-user.target

Registrer derefter med kommandoen 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. Tilføjelse af en administrativ bruger til PostgreSQL

Opret en bruger, der skal bruges i PostgreSQL-programmet, adskilt fra den bruger, der betjener PostgreSQL fra Linux. Dette er brugeren, når du arbejder med pgadmin osv. Jeg vil gerne ændre adgangskoden til den postgres-bruger, der findes som standard, og bruge den.

Kør følgende kommando som postgres-bruger.

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

※Indtast den adgangskode, du ønsker at indstille, i feltet "Password" (adgangskode).

2-7. Boring af firewalls

Tillad adgang til PostgreSQL-porten, fordi firewallen (iptables for CentOS6 og tidligere) kun tillader ssh-adgang som standard på CentOS7. Tilføj også indstillingen "permanent" for at gøre konfigurationen permanent.

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

Hvis der står "ports: 5432/tcp", er det OK.

Adgang via pgadmin. Du bør kunne logge ind som postgres-bruger med den adgangskode, du lige har angivet.

3. resumé

Vi har beskrevet den indledende konfiguration, der kræves, når PostgreSQL installeres. Den første opbygning af PostgreSQL kan være en kamp, så se venligst dette afsnit.

Tak, fordi du kiggede med til slutningen.




■INFORMATION

Klik her for at gå til den øverste side med oplysninger.


■PROFILE

Klik her for at se en profil.


■Kontaktoplysninger.

For forespørgsler om artiklen kan du kontakte os her.