Konfigurasi awal diperlukan setelah instalasi PostgreSQL pada CentOS dan sebelum memulai.


Tanggal Publikasi:17 Desember 2020.



INFOMARTION > Konfigurasi awal diperlukan setelah instalasi PostgreSQL pada CentOS dan sebelum memulai.

Ikhtisar.

Ini adalah prosedur konfigurasi awal yang diperlukan untuk menginstal dan memulai PostgreSQL pada CentOS. Informasi ini didasarkan pada asumsi bahwa CentOS7 digunakan. Bagian mengenai keamanan juga disertakan.

PostgreSQL direkomendasikan karena gratis dan sangat fungsional. Saya pernah mendengar bahwa fungsi-fungsi PostgreSQL dulunya lambat, tetapi fungsi-fungsi terbaru telah meningkat dan lebih cepat.

Versinya adalah sebagai berikut.

Versi CentOS7.6 (1810)
Versi PostgreSQL9.2.24

Daftar Isi

  1. pasang
  2. Rincian penyiapan
  3. ringkasan

1. pasang

Bagian ini menjelaskan prosedur untuk menginstal PostgreSQL.

1-1. Menginstal PostgreSQL

Lakukan instalasi PostgreSQL dengan menggunakan perintah yum. Lakukan pekerjaan sebagai pengguna root.

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

2. Rincian penyiapan

Bagian ini menjelaskan konfigurasi hingga memulai PostgreSQL.

2-1. Buat pengguna PostgreSQL khusus.

Saya ingin membuat user khusus untuk memanipulasi PostgreSQL (menggunakan perintah psql), tetapi user tersebut sudah dibuat. Saya ingat saat membuat pengguna ketika saya membuatnya di masa lalu, jadi mungkin spesifikasinya sudah berubah.

Coba beralih ke pengguna dengan perintah berikut.

[root@hostname ~]# su - postgres

Karena beberapa orang mungkin menggunakan versi PostgreSQL yang lebih lama, harus disebutkan bahwa prosedur untuk mengatur variabel lingkungan dengan mengubah ".bashrc" berikut ini tidak lagi diperlukan.

.bashrc


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

PGDATA default untuk pengguna postgres sekarang tampaknya menjadi '/var/lib/pgsql/data'. Hal ini dijelaskan sebagai merujuk ke "/usr/lib/systemd/system/postgresql.service".

2-2. Persiapan data PostgreSQL

Membuat data PostgreSQL. Pengkodean adalah UNICODE. Direktori "/var/lib/pgsql/data" telah dibuat secara default, tetapi mereka yang belum juga diminta untuk membuat folder.

-bash-4.2$ initdb --encoding=UNICODE

Karena "PGDATA=/var/lib/pgsql/data" diatur dalam "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" akan membangun DB di bawah "/var/lib/pgsql/ data/", DB dibangun di bawah "/var/lib/pgsql/data/".

2-3. Memodifikasi berkas konfigurasi

Izinkan alamat IP untuk mengakses PostgreSQL. Atur sistem agar terotentikasi kata sandi untuk akses non-lokal.

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

Modifikasi 'postgresql.conf' sebagai berikut.

postgresql.conf【Sebelum perubahan】


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

# - Connection Settings -

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

postgresql.conf【setelah perubahan】


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

# - Connection Settings -

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

Untuk menambahkan ini karena ini adalah bagian penting dari keamanan, jika Anda memasukkan pengaturan ini, Anda akan dapat mengakses situs dari IP mana pun. Jika IP yang akan diakses adalah tetap, harap sebutkan IP tetap.

Pengaturan ini diperlukan ketika masuk dari server selain server tempat PostgreSQL diinstal, misalnya pgadmin. Pengaturan ini tidak diperlukan jika Anda log masuk ke server dan menjalankan perintah psql. (karena koneksi berasal dari dirinya sendiri (localhost))

Ini adalah pengaturan keamanan yang penting, jadi minimalkan jumlah pengguna yang bisa mengaksesnya sebanyak mungkin.

Kemudian modifikasi 'pg_hba.conf'.

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

Tambahkan informasi berikut ini ke akhir dokumen.

pg_hba.conf


#Otentikasi kata sandi dari luar.
host    all             all             0.0.0.0/0            md5

Dengan menyertakan pengaturan ini, kata sandi diperlukan ketika menghubungkan dari luar. Area-area ini bisa menjadi lubang keamanan yang serius jika tidak diatur atau diatur dengan tidak benar, jadi harap atur dengan hati-hati.

2-4. pemeriksaan bootstrap

Sekarang setelah prakonfigurasi selesai, periksa apakah PostgreSQL dimulai. Karena DB dibangun sebagai pengguna postgres, beralihlah ke pengguna postgres sebelum memulai.

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

Setelah PostgreSQL berhasil dimulai, periksa apakah perintah psql berfungsi tanpa masalah. Jalankan perintah psql sebagai pengguna 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)

Tidak apa-apa jika hasil di atas dikembalikan.

2-5. Pengaturan start-up otomatis

Meskipun tidak wajib, sulit untuk memulai PostgreSQL setiap kali server direstart, sehingga dikonfigurasikan agar PostgreSQL dimulai secara otomatis ketika server dimulai. Ini juga mendaftar ke perintah systemctl. Harap dicatat bahwa prosedur ini untuk CentOS7, jadi jika Anda menggunakan apa pun selain CentOS7, Anda perlu menggunakan perintah Service untuk menangani hal ini.

Periksa apakah '/usr/lib/systemd/system/postgresql.service' ada. Jika tidak, buatlah 'postgresql.service' menggunakan prosedur berikut ini. Jalankan sebagai pengguna root.

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

Informasi berikut ini disediakan.

postgresql.service


[Unit]
#Deskripsi.
Description=PostgreSQL
#Kontrol pra- dan pasca-eksekusi.
#Before=xxx.service
After=network.target

[Service]
#Penunjukan pengguna dan grup
User=postgres
Group=postgres
#Setelah diaktifkan, atur status ke Activated (Diaktifkan).
Type=oneshot
RemainAfterExit=yes
#Mulai, berhenti dan muat ulang.
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]
#Pengaturan setara Runlevel 3.
WantedBy=multi-user.target

Berikutnya, daftarkan dengan perintah 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. Menambahkan pengguna administratif ke PostgreSQL

Buat pengguna yang akan digunakan dalam aplikasi PostgreSQL, terpisah dari pengguna yang mengoperasikan PostgreSQL dari Linux. Ini adalah pengguna saat beroperasi dengan pgadmin, dll. Saya ingin mengubah kata sandi pengguna postgres yang ada secara default dan menggunakannya.

Jalankan perintah berikut sebagai pengguna postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password 'Kata sandi (komputer)';
postgres=# \q

※Masukkan kata sandi yang ingin Anda tetapkan dalam bidang 'Password'.

2-7. Pengeboran firewall

Izinkan akses ke port PostgreSQL karena firewall (iptables untuk CentOS6 dan yang lebih lama) hanya mengizinkan akses ssh secara default pada CentOS7. Tambahkan juga opsi 'permanent' untuk membuat konfigurasi menjadi permanen.

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

Jika tertulis 'ports: 5432/tcp', itu OK.

Akses melalui pgadmin. Anda seharusnya dapat masuk sebagai pengguna postgres dengan kata sandi yang baru saja Anda tetapkan.

3. ringkasan

Kami telah menjelaskan konfigurasi awal yang diperlukan ketika PostgreSQL diinstal. Pembangunan awal PostgreSQL dapat menjadi sebuah perjuangan, jadi silakan merujuk ke bagian ini.

Terima kasih telah menonton sampai akhir.