psql: FATAL: Ident authentication failed for user (CentOS 7)
สารบัญ:
- ข้อกำหนดเบื้องต้น
- การติดตั้ง PostgreSQL บน CentOS 8
- บทบาทของ PostgreSQL และวิธีการรับรองความถูกต้อง
- การสร้างบทบาทและฐานข้อมูล PostgreSQL
- เปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL
- ข้อสรุป
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
-
หากต้องการติดตั้งกระแสข้อมูลเริ่มต้นเซิร์ฟเวอร์ 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
และให้สิทธิ์บนฐานข้อมูล
-
ก่อนอื่นให้เชื่อมต่อกับเชลล์ 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
และเพิ่ม / แก้ไขบรรทัดต่อไปนี้:
#------------------------------------------------------------------------------ # 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 postgresqlMicrosoft Tweaks Ad หลังจากที่ Apple บ่น
เรื่องราว "Laptop Hunter" ยังคงมีน้อยลงเล็กน้อย Apple-bashing
วิธีติดตั้ง gcc compiler บน centos 7
GNU Compiler Collection (GCC) คือชุดของคอมไพเลอร์และไลบรารีสำหรับ C, C ++, Objective-C, Fortran, Ada, Go และ D, ภาษาโปรแกรม บทช่วยสอนนี้ครอบคลุมขั้นตอนที่จำเป็นในการติดตั้งตัวรวบรวม GCC บน CentOS 7
วิธีติดตั้ง slack บน centos 7
Slack เป็นหนึ่งในแพลตฟอร์มการทำงานร่วมกันที่ได้รับความนิยมมากที่สุดในโลกที่รวบรวมการสื่อสารของคุณเข้าด้วยกัน บทช่วยสอนนี้อธิบายวิธีการติดตั้ง Slack บน CentOS 7