Αρχική ρύθμιση παραμέτρων που απαιτείται μετά την εγκατάσταση της PostgreSQL στο CentOS και πριν από την έναρξη λειτουργίας.


Ημερομηνία δημοσίευσης:17 Δεκεμβρίου 2020.



INFOMARTION > Αρχική ρύθμιση παραμέτρων που απαιτείται μετά την εγκατάσταση της PostgreSQL στο CentOS και πριν από την έναρξη λειτουργίας.

Επισκόπηση.

Αυτή είναι η αρχική διαδικασία διαμόρφωσης που απαιτείται για την εγκατάσταση και την εκκίνηση της PostgreSQL στο CentOS. Οι πληροφορίες βασίζονται στην υπόθεση ότι χρησιμοποιείται το CentOS7. Περιλαμβάνεται επίσης η ενότητα για την ασφάλεια.

Συνιστάται η PostgreSQL, καθώς είναι δωρεάν και εξαιρετικά λειτουργική. Έχω ακούσει ότι οι συναρτήσεις της PostgreSQL ήταν αργές, αλλά οι πρόσφατες έχουν βελτιωθεί και είναι ταχύτερες.

Οι εκδόσεις έχουν ως εξής.

Έκδοση CentOS7.6 (1810)
Έκδοση της PostgreSQL9.2.24

Πίνακας περιεχομένων

  1. εγκαταστήστε το
  2. Λεπτομέρειες ρύθμισης
  3. περίληψη

1. εγκαταστήστε το

Αυτή η ενότητα περιγράφει τη διαδικασία εγκατάστασης της PostgreSQL.

1-1. Εγκατάσταση της PostgreSQL

Πραγματοποιήστε την εγκατάσταση της PostgreSQL μέσω της εντολής yum. Εκτελέστε την εργασία ως χρήστης root.

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

2. Λεπτομέρειες ρύθμισης

Αυτή η ενότητα περιγράφει τη διαμόρφωση μέχρι την εκκίνηση της PostgreSQL.

2-1. Δημιουργήστε έναν αποκλειστικό χρήστη της PostgreSQL.

Ήθελα να δημιουργήσω έναν ειδικό χρήστη για τον χειρισμό της PostgreSQL (χρήση εντολών psql), αλλά ο χρήστης είχε ήδη δημιουργηθεί. Θυμάμαι ότι δημιουργούσα χρήστες όταν τους δημιουργούσα στο παρελθόν, οπότε ίσως οι προδιαγραφές να έχουν αλλάξει.

Δοκιμάστε να μεταβείτε σε έναν χρήστη με την ακόλουθη εντολή.

[root@hostname ~]# su - postgres

Καθώς κάποιοι ενδεχομένως χρησιμοποιούν παλαιότερη έκδοση της PostgreSQL, θα πρέπει να αναφερθεί ότι η διαδικασία ορισμού των μεταβλητών περιβάλλοντος με την αλλαγή του ακόλουθου αρχείου ".bashrc" δεν είναι πλέον απαραίτητη.

.bashrc


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

Το προεπιλεγμένο PGDATA για τους χρήστες του postgres φαίνεται τώρα να είναι το '/var/lib/pgsql/data'. Περιγράφεται ότι αναφέρεται στο "/usr/lib/systemd/system/postgresql.service".

2-2. Προετοιμασία δεδομένων PostgreSQL

Δημιουργία δεδομένων PostgreSQL. Η κωδικοποίηση είναι UNICODE. Ο κατάλογος "/var/lib/pgsql/data" δημιουργήθηκε από προεπιλογή, αλλά όσοι δεν το έχουν κάνει, καλούνται επίσης να δημιουργήσουν έναν φάκελο.

-bash-4.2$ initdb --encoding=UNICODE

Καθώς το "PGDATA=/var/lib/pgsql/data" έχει οριστεί στο "/usr/lib/systemd/system/postgresql.service", το "initdb --encoding=UNICODE" θα δημιουργήσει μια ΒΔ στο "/var/lib/pgsql/ data/", η ΒΔ δημιουργείται στο "/var/lib/pgsql/data/".

2-3. Τροποποίηση του αρχείου ρυθμίσεων

Επιτρέψτε σε διευθύνσεις IP να έχουν πρόσβαση στην PostgreSQL. Ρυθμίστε το σύστημα έτσι ώστε να είναι πιστοποιημένο με κωδικό πρόσβασης για μη τοπική πρόσβαση.

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

Τροποποιήστε το αρχείο 'postgresql.conf' ως εξής.

postgresql.conf【Πριν από την αλλαγή】


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

# - Connection Settings -

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

postgresql.conf【μετά την αλλαγή】


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

# - Connection Settings -

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

Για να προσθέσω σε αυτό, καθώς είναι ένα σημαντικό μέρος της ασφάλειας, αν βάλετε αυτή τη ρύθμιση, θα μπορείτε να έχετε πρόσβαση στον ιστότοπο από οποιαδήποτε IP. Εάν η IP στην οποία πρόκειται να αποκτήσετε πρόσβαση είναι σταθερή, αναφέρετε τη σταθερή IP.

Αυτή η ρύθμιση είναι απαραίτητη όταν συνδέεστε από έναν διακομιστή διαφορετικό από αυτόν στον οποίο είναι εγκατεστημένη η PostgreSQL, π.χ. pgadmin. Αυτή η ρύθμιση δεν είναι απαραίτητη εάν συνδεθείτε στο διακομιστή και εκτελέσετε την εντολή psql. (αφού η σύνδεση προέρχεται από τον ίδιο (localhost))

Πρόκειται για μια σημαντική ρύθμιση ασφαλείας, οπότε ελαχιστοποιήστε όσο το δυνατόν περισσότερο τον αριθμό των χρηστών που μπορούν να έχουν πρόσβαση σε αυτήν.

Στη συνέχεια, τροποποιήστε το αρχείο 'pg_hba.conf'.

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

Προσθέστε τις ακόλουθες πληροφορίες στο τέλος του εγγράφου.

pg_hba.conf


#Αυθεντικοποίηση κωδικού πρόσβασης από το εξωτερικό.
host    all             all             0.0.0.0/0            md5

Με την προσθήκη αυτής της ρύθμισης, απαιτείται κωδικός πρόσβασης κατά τη σύνδεση από το εξωτερικό. Αυτές οι περιοχές μπορούν να αποτελέσουν σοβαρά κενά ασφαλείας αν δεν ρυθμιστούν ή αν ρυθμιστούν λανθασμένα, γι' αυτό παρακαλούμε να τις ρυθμίσετε με τη μεγαλύτερη δυνατή προσοχή.

2-4. έλεγχος bootstrap

Τώρα που ολοκληρώθηκε η προρύθμιση, ελέγξτε ότι ξεκινάει η PostgreSQL. Δεδομένου ότι η ΒΔ δημιουργήθηκε ως χρήστης postgres, μεταβείτε στον χρήστη postgres πριν ξεκινήσετε.

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

Μετά την επιτυχή εκκίνηση της PostgreSQL, ελέγξτε ότι η εντολή psql λειτουργεί χωρίς προβλήματα. Εκτελέστε την εντολή psql ως χρήστης του 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)

Είναι εντάξει αν επιστραφούν τα παραπάνω αποτελέσματα.

2-5. Ρύθμιση αυτόματης εκκίνησης

Αν και δεν είναι υποχρεωτικό, είναι δύσκολο να εκκινείται η PostgreSQL κάθε φορά που γίνεται επανεκκίνηση του διακομιστή, οπότε ρυθμίζεται έτσι ώστε η PostgreSQL να εκκινείται αυτόματα κατά την εκκίνηση του διακομιστή. Επίσης, εγγράφεται στην εντολή systemctl. Σημειώστε ότι αυτή η διαδικασία αφορά το CentOS7, οπότε αν χρησιμοποιείτε οτιδήποτε άλλο εκτός του CentOS7, θα πρέπει να χρησιμοποιήσετε την εντολή Service για να το αντιμετωπίσετε.

Ελέγξτε αν υπάρχει το αρχείο '/usr/lib/systemd/system/postgresql.service'. Αν όχι, δημιουργήστε το 'postgresql.service' χρησιμοποιώντας την ακόλουθη διαδικασία. Εκτελέστε ως χρήστης root.

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

Παρέχονται οι ακόλουθες πληροφορίες.

postgresql.service


[Unit]
#Περιγραφή.
Description=PostgreSQL
#Έλεγχος πριν και μετά την εκτέλεση.
#Before=xxx.service
After=network.target

[Service]
#Ορισμός χρήστη και ομάδας
User=postgres
Group=postgres
#Μόλις ενεργοποιηθεί, ορίστε την κατάσταση σε Ενεργοποιημένη.
Type=oneshot
RemainAfterExit=yes
#Εκκίνηση, διακοπή και επαναφόρτωση.
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]
#Ισοδύναμες ρυθμίσεις επιπέδου εκτέλεσης 3.
WantedBy=multi-user.target

Στη συνέχεια, εγγραφείτε με την εντολή 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. Προσθήκη διαχειριστικού χρήστη στην PostgreSQL

Δημιουργήστε έναν χρήστη που θα χρησιμοποιείται στην εφαρμογή PostgreSQL, ξεχωριστά από τον χρήστη που χειρίζεται την PostgreSQL από το Linux. Αυτός είναι ο χρήστης όταν λειτουργεί με το pgadmin κ.λπ. Θα ήθελα να αλλάξω τον κωδικό πρόσβασης του χρήστη postgres που υπάρχει από προεπιλογή και να τον χρησιμοποιήσω.

Εκτελέστε την ακόλουθη εντολή ως χρήστης του postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password '(υπολογιστής) κωδικός πρόσβασης';
postgres=# \q

※Εισάγετε τον κωδικό πρόσβασης που θέλετε να ορίσετε στο πεδίο "Password" (Κωδικός πρόσβασης).

2-7. Διάτρηση τειχών προστασίας

Επιτρέψτε την πρόσβαση στη θύρα PostgreSQL επειδή το τείχος προστασίας (iptables για το CentOS6 και παλαιότερα) επιτρέπει μόνο την πρόσβαση ssh από προεπιλογή στο CentOS7. Προσθέστε επίσης την επιλογή '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:

Αν λέει 'ports: 5432/tcp', είναι εντάξει.

Πρόσβαση μέσω pgadmin. Θα πρέπει να μπορείτε να συνδεθείτε ως χρήστης του postgres με τον κωδικό πρόσβασης που μόλις ορίσατε.

3. περίληψη

Περιγράψαμε τις αρχικές ρυθμίσεις που απαιτούνται κατά την εγκατάσταση της PostgreSQL. Η αρχική δημιουργία της PostgreSQL μπορεί να είναι δύσκολη, γι' αυτό ανατρέξτε σε αυτή την ενότητα.

Σας ευχαριστούμε που παρακολουθήσατε μέχρι το τέλος.