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-version | 7.6 (1810) |
---|---|
Version af PostgreSQL | 9.2.24 |
Indholdsfortegnelse
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.
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.
#------------------------------------------------------------------------------
# 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;
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.
#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.
[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.