Initial konfiguration krävs efter installation av PostgreSQL på CentOS och före uppstart.


Datum för offentliggörande:17 december 2020.



INFOMARTION > Initial konfiguration krävs efter installation av PostgreSQL på CentOS och före uppstart.

Översikt.

Detta är den inledande konfigurationsproceduren som krävs för att installera och starta PostgreSQL på CentOS. Informationen bygger på antagandet att CentOS7 används. Avsnittet om säkerhet är också inkluderat.

PostgreSQL rekommenderas eftersom det är gratis och mycket funktionellt. Jag har hört att PostgreSQL-funktionerna brukade vara långsamma, men att de senaste funktionerna har förbättrats och är snabbare.

Versionerna är följande.

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

Innehållsförteckning

  1. installera
  2. Uppsättningsinformation
  3. sammanfattning

1. installera

Det här avsnittet beskriver hur du installerar PostgreSQL.

1-1. Installera PostgreSQL

Installera PostgreSQL med hjälp av kommandot yum. Utför arbetet som rotanvändare.

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

2. Uppsättningsinformation

Det här avsnittet beskriver konfigurationen fram till starten av PostgreSQL.

2-1. Skapa en särskild PostgreSQL-användare.

Jag ville skapa en särskild användare för att hantera PostgreSQL (använda psql-kommandon), men användaren hade redan skapats. Jag minns att jag skapade användare när jag skapade dem tidigare, så kanske har specifikationen ändrats.

Försök att byta till en användare med följande kommando.

[root@hostname ~]# su - postgres

Eftersom vissa personer kanske använder en äldre version av PostgreSQL bör det nämnas att förfarandet för att ställa in miljövariabler genom att ändra följande ".bashrc" inte heller längre är nödvändigt.

.bashrc


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

Standard PGDATA för postgres-användare verkar nu vara "/var/lib/pgsql/data". Den beskrivs som en hänvisning till "/usr/lib/systemd/system/postgresql.service".

2-2. Förberedelse av PostgreSQL-data

Skapa PostgreSQL-data. Kodningen är UNICODE. Katalogen "/var/lib/pgsql/data" skapades som standard, men de som inte har gjort det ombeds också att skapa en mapp.

-bash-4.2$ initdb --encoding=UNICODE

Eftersom "PGDATA=/var/lib/pgsql/data" är inställt i "/usr/lib/systemd/system/postgresql.service" kommer "initdb --encoding=UNICODE" att bygga en databas under "/var/lib/pgsql/". data/", DB byggs under "/var/lib/pgsql/data/".

2-3. Ändra konfigurationsfilen

Tillåt IP-adresser att komma åt PostgreSQL. Konfigurera systemet så att det är lösenordsautentiserat för icke-lokal åtkomst.

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

Ändra postgresql.conf på följande sätt.

postgresql.conf【Före 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;

Om du väljer den här inställningen kan du få tillgång till webbplatsen från vilken IP som helst, eftersom det är en viktig del av säkerheten. Om den IP-adress som ska nås är fast, ange den fasta IP-adressen.

Den här inställningen är nödvändig när du loggar in från en annan server än den där PostgreSQL är installerat, t.ex. pgadmin. Den här inställningen behövs inte om du loggar in på servern och kör kommandot psql. (eftersom anslutningen kommer från honom själv (localhost)).

Detta är en viktig säkerhetsinställning, så minimera antalet användare som kan komma åt den så mycket som möjligt.

Ändra sedan pg_hba.conf.

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

Lägg till följande information i slutet av dokumentet.

pg_hba.conf


#Lösenordsautentisering utifrån.
host    all             all             0.0.0.0/0            md5

Genom att inkludera den här inställningen krävs ett lösenord när du ansluter från utsidan. Dessa områden kan utgöra allvarliga säkerhetshål om de inte är konfigurerade eller är felaktigt konfigurerade, så du bör konfigurera dem med största noggrannhet.

2-4. kontroll av uppstartsklämma

Nu när förkonfigurationen är klar kan du kontrollera att PostgreSQL startar. Eftersom databasen byggdes som en postgres-användare ska du byta till postgres-användaren innan du börjar.

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

Efter att PostgreSQL har startats, kontrollera att kommandot psql fungerar utan problem. Kör kommandot psql som postgres-användare.

-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 är okej om du får ovanstående resultat.

2-5. Inställning för automatisk start

Även om det inte är obligatoriskt är det svårt att starta PostgreSQL varje gång servern startas om, så det är konfigurerat så att PostgreSQL startas automatiskt när servern startas. Den registrerar också kommandot systemctl. Observera att den här proceduren gäller för CentOS7, så om du använder något annat än CentOS7 måste du använda kommandot Service för att hantera detta.

Kontrollera om "/usr/lib/systemd/system/postgresql.service" finns. Om inte, skapa "postgresql.service" med hjälp av följande procedur. Kör som root-användare.

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

Följande information tillhandahålls.

postgresql.service


[Unit]
#Beskrivning.
Description=PostgreSQL
#Kontroll före och efter utförandet.
#Before=xxx.service
After=network.target

[Service]
#Användar- och gruppbeteckning
User=postgres
Group=postgres
#När den är aktiverad, sätts statusen till Aktiverad.
Type=oneshot
RemainAfterExit=yes
#Starta, stoppa och ladda om.
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]
#Motsvarande inställningar för Runlevel 3.
WantedBy=multi-user.target

Registrera sedan med kommandot 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. Lägga till en administrativ användare till PostgreSQL

Skapa en användare som ska användas i PostgreSQL-programmet, separat från den användare som använder PostgreSQL från Linux. Detta är användaren när du använder pgadmin osv. Jag vill ändra lösenordet för den postgres-användare som finns som standard och använda den.

Kör följande kommando som postgres-användare.

-bash-4.2$ psql
postgres=# alter role postgres with password 'Lösenord (dator)';
postgres=# \q

※Ange det lösenord som du vill ställa in i fältet "Password" (Lösenord).

2-7. Borrning av brandväggar

Tillåt åtkomst till PostgreSQL-porten eftersom brandväggen (iptables för CentOS6 och tidigare) endast tillåter ssh-åtkomst som standard på CentOS7. Lägg också till alternativet "permanent" för att göra 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:

Om det står "ports: 5432/tcp" är det OK.

Åtkomst via pgadmin. Du bör kunna logga in som postgres-användare med det lösenord som du just har angett.

3. sammanfattning

Vi har beskrivit den första konfigurationen som krävs när PostgreSQL installeras. Den första uppbyggnaden av PostgreSQL kan vara svår, så läs det här avsnittet.

Tack för att du tittade på till slutet.




■INFORMATION

Klicka här för att komma till den översta sidan med information.


■PROFILE

Klicka här för en profil.


■Kontaktuppgifter.

För frågor om artikeln, vänligen kontakta oss här.