Android

วิธีติดตั้ง postgresql บน centos 8

psql: FATAL: Ident authentication failed for user (CentOS 7)

psql: FATAL: Ident authentication failed for user (CentOS 7)

สารบัญ:

Anonim

PostgreSQL หรือ Postgres เป็นระบบจัดการฐานข้อมูลเชิงวัตถุสัมพันธ์เชิงวัตถุแบบโอเพ่นซอร์สพร้อมด้วยคุณสมบัติขั้นสูงมากมายที่ช่วยให้คุณสร้างสภาพแวดล้อมที่ทนต่อความผิดพลาดหรือแอปพลิเคชันที่ซับซ้อน

ในคู่มือนี้เราจะพูดถึงวิธีการติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL บน CentOS 8 ก่อนที่จะเลือกรุ่นที่จะติดตั้งตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณรองรับ

เราจะสำรวจพื้นฐานของการบริหารฐานข้อมูล PostgreSQL

ข้อกำหนดเบื้องต้น

เพื่อให้สามารถติดตั้งแพ็คเกจคุณจะต้องเข้าสู่ระบบในฐานะผู้ใช้รูทหรือผู้ใช้ที่มีสิทธิ์ sudo

การติดตั้ง PostgreSQL บน CentOS 8

ในขณะที่เขียนบทความนี้มีเซิร์ฟเวอร์ PostgreSQL สองรุ่นสำหรับการติดตั้งจากที่เก็บ CentOS มาตรฐาน: รุ่น 9.6 และ 10.0

หากต้องการแสดงรายการสตรีมโมดูล PostgreSQL ที่มีให้พิมพ์:

dnf module list postgresql

ผลลัพธ์แสดงให้เห็นว่าโมดูล postgresql สามารถใช้ได้กับสองกระแส แต่ละสตรีมมีสองโปรไฟล์: เซิร์ฟเวอร์และไคลเอนต์ สตรีม 10 พร้อมเซิร์ฟเวอร์โปรไฟล์เป็นค่าเริ่มต้น:

CentOS-8 - AppStream Name Stream Profiles Summary postgresql 10 client, server PostgreSQL server and client module postgresql 9.6 client, server PostgreSQL server and client module

  1. หากต้องการติดตั้งกระแสข้อมูลเริ่มต้นเซิร์ฟเวอร์ PostgreSQL รุ่น 10.0 ให้พิมพ์:

    sudo dnf install @postgresql:10

    หากต้องการติดตั้งเซิร์ฟเวอร์ PostgreSQL เวอร์ชัน 9.6 ให้ทำดังนี้

    sudo dnf install @postgresql:9.6

คุณอาจต้องการติดตั้งแพ็คเกจ contrib ซึ่งมีคุณสมบัติเพิ่มเติมหลายอย่างสำหรับฐานข้อมูล PostgreSQL:

sudo dnf install postgresql-contrib

เมื่อการติดตั้งเสร็จสิ้นให้เริ่มต้นฐานข้อมูล PostgreSQL ด้วยคำสั่งต่อไปนี้:

sudo postgresql-setup initdb

Initializing database… OK

เริ่มบริการ PostgreSQL และเปิดใช้งานเพื่อเริ่มการบูท:

sudo systemctl enable --now postgresql

ใช้เครื่องมือ psql เพื่อตรวจสอบการติดตั้งโดยเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL และพิมพ์เวอร์ชัน:

sudo -u postgres psql -c "SELECT version();"

PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit

บทบาทของ PostgreSQL และวิธีการรับรองความถูกต้อง

PostgreSQL จัดการสิทธิ์การเข้าถึงฐานข้อมูลโดยใช้แนวคิดของบทบาท บทบาทสามารถแสดงถึงผู้ใช้ฐานข้อมูลหรือกลุ่มผู้ใช้ฐานข้อมูล

PostgreSQL สนับสนุนวิธีการรับรองความถูกต้องหลายวิธี วิธีที่ใช้กันมากที่สุดคือ:

  • ความน่าเชื่อถือ - บทบาทสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่านตราบใดที่ตรงตามเงื่อนไขที่กำหนดไว้ใน pg_hba.conf ศัพท์ - บทบาทสามารถเชื่อมต่อได้โดยระบุรหัสผ่าน รหัสผ่านสามารถจัดเก็บในรูปแบบ scram-sha-256 , md5 และ password (ข้อความที่ชัดเจน) ได้ - สนับสนุนเฉพาะการเชื่อมต่อ TCP / IP เท่านั้น มันทำงานโดยการได้รับชื่อผู้ใช้ระบบปฏิบัติการของลูกค้าด้วยการทำแผนที่ชื่อผู้ใช้ตัวเลือก Peer - เหมือนกับ Ident แต่ได้รับการสนับสนุนในการเชื่อมต่อท้องถิ่นเท่านั้น

การพิสูจน์ตัวตนไคลเอ็นต์ PostgreSQL ถูกกำหนดในไฟล์คอนฟิกูเรชันชื่อ pg_hba.conf โดยค่าเริ่มต้นสำหรับการเชื่อมต่อท้องถิ่น PostgreSQL ถูกตั้งค่าให้ใช้วิธีการรับรองความถูกต้องแบบเพียร์

ผู้ใช้ postgres จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณติดตั้งเซิร์ฟเวอร์ PostgreSQL ผู้ใช้นี้เป็น superuser สำหรับอินสแตนซ์ PostgreSQL เทียบเท่ากับผู้ใช้รูทของ MySQL

ในการล็อกอินเข้าสู่เซิร์ฟเวอร์ PostgreSQL ในฐานะผู้ใช้ postgres อันดับแรกให้สลับไปที่ผู้ใช้แล้วเข้าถึงพรอมต์ PostgreSQL โดยใช้ยูทิลิตี psql :

sudo su - postgres psql

จากที่นี่คุณสามารถโต้ตอบกับอินสแตนซ์ PostgreSQL หากต้องการออกจากเชลล์ PostgreSQL ให้พิมพ์:

\q

คุณยังสามารถเข้าถึงพรอมต์ PostgreSQL โดยไม่ต้องสลับผู้ใช้ด้วยคำสั่ง sudo :

sudo -u postgres psql

โดยทั่วไปผู้ใช้ postgres จะใช้จาก localhost เท่านั้น

การสร้างบทบาทและฐานข้อมูล PostgreSQL

เฉพาะผู้ใช้ระดับสูงและบทบาทที่มีสิทธิ์ CREATEROLE สามารถสร้างบทบาทใหม่

ในตัวอย่างต่อไปนี้เราจะสร้างบทบาทใหม่ชื่อ john ฐานข้อมูลชื่อ johndb และให้สิทธิ์บนฐานข้อมูล

  1. ก่อนอื่นให้เชื่อมต่อกับเชลล์ PostgreSQL:

    sudo -u postgres psql

    สร้างบทบาท PostgreSQL ใหม่โดยใช้คำสั่ง thr ต่อไปนี้:

    create role john;

    สร้างฐานข้อมูลใหม่:

    create database johndb;

    มอบสิทธิพิเศษให้กับผู้ใช้ในฐานข้อมูลโดยการเรียกใช้แบบสอบถามต่อไปนี้:

    grant all privileges on database johndb to john;

เปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL

ตามค่าเริ่มต้นเซิร์ฟเวอร์ PostgreSQL จะรับฟังเฉพาะบนอินเทอร์เฟซท้องถิ่น 127.0.0.1

หากต้องการเปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL ของคุณให้เปิดไฟล์กำหนดค่า:

sudo nano /var/lib/pgsql/data/postgresql.conf

เลื่อนลงไปที่ส่วน CONNECTIONS AND AUTHENTICATION และเพิ่ม / แก้ไขบรรทัดต่อไปนี้:

/var/lib/pgsql/data/postgresql.conf

#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on;

บันทึกไฟล์และรีสตาร์ทเซอร์วิส PostgreSQL ด้วย:

sudo systemctl restart postgresql

ตรวจสอบการเปลี่ยนแปลงด้วยยูทิลิตี้ ss :

ss -nlt | grep 5432

LISTEN 0 128 0.0.0.0:5432 0.0.0.0:* LISTEN 0 128:5432:*

ผลลัพธ์ข้างต้นแสดงให้เห็นว่าเซิร์ฟเวอร์ PostgreSQL กำลังรับฟังพอร์ตเริ่มต้นในทุกอินเตอร์เฟส (0.0.0.0)

ขั้นตอนสุดท้ายคือการกำหนดค่าเซิร์ฟเวอร์ให้ยอมรับการเชื่อมต่อระยะไกลโดยการแก้ไขไฟล์ pg_hba.conf

ด้านล่างนี้คือตัวอย่างบางส่วนที่แสดงกรณีการใช้ที่แตกต่างกัน:

/var/lib/pgsql/data/pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD # The user jane can access all databases from all locations using an md5 password host all jane 0.0.0.0/0 md5 # The user jane can access only the janedb database from all locations using an md5 password host janedb jane 0.0.0.0/0 md5 # The user jane can access all databases from a trusted location (192.168.1.134) without a password host all jane 192.168.1.134 trust

ข้อสรุป

CentOS 8 มีสองเวอร์ชันของ PostgreSQL: 9.6 และ 10.0

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ไปที่เอกสาร PostgreSQL

ฐานข้อมูล centos postgresql