psql: FATAL: Ident authentication failed for user (CentOS 7)
สารบัญ:
- ข้อกำหนดเบื้องต้น
- ติดตั้ง PostgreSQL จากที่เก็บ CentOS
- ติดตั้ง PostgreSQL จากที่เก็บ PostgreSQL
- บทบาทของ PostgreSQL และวิธีการรับรองความถูกต้อง
- การสร้างบทบาทและฐานข้อมูล PostgreSQL
- เปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL
- ข้อสรุป
PostgreSQL หรือ Postgres เป็นระบบจัดการฐานข้อมูลเชิงวัตถุสัมพันธ์เชิงโอเพนซอร์สที่มีคุณสมบัติขั้นสูงมากมายที่ช่วยให้คุณสร้างเว็บแอปพลิเคชันที่ซับซ้อน
ในบทช่วยสอนนี้เราจะแสดงวิธีการสองวิธีที่แตกต่างกันเกี่ยวกับวิธีการติดตั้ง PostgreSQL ในเครื่อง CentOS 7 ของคุณ วิธีแรกจะนำคุณผ่านขั้นตอนที่จำเป็นในการติดตั้ง PostgreSQL v9.2.23 จากที่เก็บ CentOS ในขณะที่วิธีที่สองจะแสดงวิธีการติดตั้ง PostgreSQL รุ่นล่าสุดจากที่เก็บอย่างเป็นทางการของ PostgreSQL
หากแอปพลิเคชันของคุณไม่ต้องการเวอร์ชันล่าสุดเราขอแนะนำให้ใช้วิธีแรกและติดตั้ง PostgreSQL จากที่เก็บ CentOS
เราจะสำรวจพื้นฐานของการบริหารฐานข้อมูล PostgreSQL
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการกับบทช่วยสอนนี้ต่อให้แน่ใจว่าคุณได้เข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ sudo
ติดตั้ง PostgreSQL จากที่เก็บ CentOS
ในขณะที่เขียนบทความนี้ PostgreSQL รุ่นล่าสุดพร้อมใช้งานจากที่เก็บ CentOS คือ PostgreSQL รุ่น 9.2.23
ในการติดตั้ง PostgreSQL บนเซิร์ฟเวอร์ CentOS ของคุณทำตามขั้นตอนด้านล่าง:
-
การติดตั้ง PostgreSQL
ในการติดตั้งเซิร์ฟเวอร์ PostgreSQL พร้อมกับแพ็คเกจ Contg ของ PostgreSQL ซึ่งมีคุณสมบัติเพิ่มเติมมากมายสำหรับฐานข้อมูล PostgreSQL เพียงพิมพ์:
sudo yum install postgresql-server postgresql-contrib
กำลังเริ่มต้นฐานข้อมูล
เริ่มต้นฐานข้อมูล PostgreSQL ด้วยคำสั่งต่อไปนี้:
sudo postgresql-setup initdb
Initializing database… OK
เริ่ม PostgreSQL
หากต้องการเริ่มบริการ PostgreSQL และเปิดใช้งานเพื่อเริ่มการบูทเพียงพิมพ์:
sudo systemctl start postgresql
sudo systemctl enable postgresql
การตรวจสอบการติดตั้ง PostgreSQL
เพื่อตรวจสอบการติดตั้งเราจะพยายามเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL โดยใช้เครื่องมือ
psql
และพิมพ์รุ่นเซิร์ฟเวอร์:sudo -u postgres psql -c "SELECT version();"
PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
ติดตั้ง PostgreSQL จากที่เก็บ PostgreSQL
ในขณะที่เขียนบทความนี้ PostgreSQL รุ่นล่าสุดพร้อมใช้งานจากที่เก็บอย่างเป็นทางการของ PostgreSQL คือ PostgreSQL เวอร์ชัน 10.4 ก่อนดำเนินการต่อในขั้นตอนถัดไปคุณควรไปที่หน้าคลังเก็บ PostgreSQL Yum และตรวจสอบว่ามีรุ่นใหม่หรือไม่
ทำตามขั้นตอนด้านล่างเพื่อติดตั้งเวอร์ชัน PostgreSQL ล่าสุดบนเซิร์ฟเวอร์ CentOS ของคุณ:
-
การเปิดใช้งานที่เก็บ PostgreSQL
หากต้องการเปิดใช้งานที่เก็บ PostgreSQL เพียงติดตั้งไฟล์
rpm
เก็บ:sudo yum install
การติดตั้ง PostgreSQL
เมื่อเปิดใช้งานที่เก็บแล้วให้ติดตั้งเซิร์ฟเวอร์ PostgreSQL และแพ็คเกจ Contrib PostgreSQL ด้วย:
sudo yum install postgresql10-server postgresql10-contrib
กำลังเริ่มต้นฐานข้อมูล
ในการเริ่มต้นประเภทฐานข้อมูล PostgreSQL:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database… OK
เริ่ม PostgreSQL
ในการเริ่มบริการ PostgreSQL และเปิดใช้งานเพื่อเริ่มการบู๊ตประเภท:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
การตรวจสอบการติดตั้ง PostgreSQL
เพื่อตรวจสอบการติดตั้งเราจะพยายามเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL โดยใช้เครื่องมือ
psql
และพิมพ์รุ่นเซิร์ฟเวอร์:sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)
บทบาทของ PostgreSQL และวิธีการรับรองความถูกต้อง
สิทธิ์การเข้าถึงฐานข้อมูลภายใน PostgreSQL ได้รับการจัดการด้วยแนวคิดของบทบาท บทบาทสามารถแสดงถึงผู้ใช้ฐานข้อมูลหรือกลุ่มผู้ใช้ฐานข้อมูล
PostgreSQL สนับสนุนวิธีการรับรองความถูกต้องหลายวิธี วิธีที่ใช้กันมากที่สุดคือ:
- ความน่าเชื่อถือ - ด้วยวิธีนี้บทบาทสามารถเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่านตราบใดที่เกณฑ์ที่กำหนดไว้ใน
pg_hba.conf
เป็นไปตามนั้นรหัสผ่าน - บทบาทสามารถเชื่อมต่อได้โดยระบุรหัสผ่าน รหัสผ่านสามารถเก็บไว้ในรูปแบบscram-sha-256
md5
และpassword
(ข้อความที่ชัดเจน) ได้ - วิธีนี้ใช้ได้กับการเชื่อมต่อ TCP / IP เท่านั้น มันทำงานโดยได้รับชื่อผู้ใช้ระบบปฏิบัติการของลูกค้าด้วยการทำแผนที่ชื่อผู้ใช้ตัวเลือก - เหมือน Ident แต่รองรับเฉพาะในการเชื่อมต่อท้องถิ่น
การพิสูจน์ตัวตนไคลเอ็นต์ PostgreSQL ถูกกำหนดในไฟล์คอนฟิกูเรชันชื่อ
pg_hba.conf
โดยค่าเริ่มต้นสำหรับการเชื่อมต่อท้องถิ่น PostgreSQL ถูกตั้งค่าให้ใช้วิธีการรับรองความถูกต้องแบบเพียร์
ผู้ใช้
postgres
จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณติดตั้ง PostgreSQL ผู้ใช้นี้เป็น superuser ของอินสแตนซ์ PostgreSQL และเทียบเท่ากับผู้ใช้รูทของ MySQL
ในการเข้าสู่เซิร์ฟเวอร์ PostgreSQL ในฐานะผู้ใช้ postgres ก่อนอื่นคุณต้องเปลี่ยนไปใช้ผู้ใช้ postgres แล้วเข้าถึงพรอมต์ PostgreSQL โดยใช้ยูทิลิตี
psql
:
sudo su - postgres
psql
จากที่นี่คุณสามารถโต้ตอบกับอินสแตนซ์ PostgreSQL ของคุณ หากต้องการออกจากเชลล์ PostgreSQL ให้พิมพ์:
\q
คุณยังสามารถเข้าถึงพรอมต์ PostgreSQL โดยไม่ต้องสลับผู้ใช้โดยใช้คำสั่ง
sudo
:
sudo -u postgres psql
โดยทั่วไปผู้ใช้
postgres
จะใช้เฉพาะจากโฮสต์ท้องถิ่นและไม่แนะนำให้ตั้งรหัสผ่านสำหรับผู้ใช้นี้
psql
ซึ่งเป็น
/usr/pgsql-10/bin/psql
การสร้างบทบาทและฐานข้อมูล PostgreSQL
เฉพาะผู้ใช้ระดับสูงและบทบาทที่มีสิทธิ์
CREATEROLE
สามารถสร้างบทบาทใหม่
ในตัวอย่างต่อไปนี้เราจะสร้างบทบาทใหม่ชื่อ
john
ฐานข้อมูลชื่อ
johndb
และให้สิทธิ์บนฐานข้อมูล
-
เชื่อมต่อกับ PostgreSQL Shell
sudo -u postgres psql
สร้างบทบาท PostgreSQL ใหม่
คำสั่งต่อไปนี้จะสร้างบทบาทใหม่ชื่อ john:
create role john;
สร้างฐานข้อมูล PostgreSQL ใหม่
สร้างฐานข้อมูลใหม่ชื่อ johndb โดยใช้คำสั่ง
createdb
:create database johndb;
ให้สิทธิ์พิเศษ
หากต้องการให้สิทธิ์แก่ผู้ใช้
john
ในฐานข้อมูลที่เราสร้างขึ้นในขั้นตอนก่อนหน้าให้เรียกใช้แบบสอบถามต่อไปนี้:grant all privileges on database johndb to john;
เปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL
ตามค่าเริ่มต้นเซิร์ฟเวอร์ PostgreSQL จะรับฟังเฉพาะบนอินเทอร์เฟซท้องถิ่น
127.0.0.1
หากต้องการเปิดใช้งานการเข้าถึงระยะไกลไปยังเซิร์ฟเวอร์ PostgreSQL ของคุณให้เปิดไฟล์กำหนดค่า
postgresql.conf
และเพิ่ม
listen_addresses = '*'
ในส่วน
CONNECTIONS AND AUTHENTICATION
sudo vim /var/lib/pgsql/data/postgresql.conf
หากคุณใช้งาน PostgreSQL เวอร์ชั่น 10 พา ธ ไปยังไฟล์คือ /var/lib/pgsql/10/data/postgresql.conf./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
หากคุณกำลังเรียกใช้ PostgreSQL เวอร์ชัน 10 ให้เริ่มบริการ PostgreSQL ด้วย
systemctl restart postgresql-10
ตรวจสอบการเปลี่ยนแปลงด้วยยูทิลิตี้
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 will be able to access all databases from all locations using a md5 password host all jane 0.0.0.0/0 md5 # The user jane will be able to access only the janedb from all locations using a md5 password host janedb jane 0.0.0.0/0 md5 # The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password host all jane 192.168.1.134 trust
หากคุณใช้งาน PostgreSQL เวอร์ชัน 10 พา ธ แบบเต็มไปยังไฟล์คือ
/var/lib/pgsql/10/data/pg_hba.conf
ข้อสรุป
คุณได้เรียนรู้วิธีการติดตั้งและกำหนดค่า PostgreSQL บนเซิร์ฟเวอร์ CentOS 7 ของคุณ
คุณสามารถศึกษาเอกสาร PostgreSQL สำหรับข้อมูลเพิ่มเติมในหัวข้อนี้
ฐานข้อมูล centos postgresqlMicrosoft Tweaks Ad หลังจากที่ Apple บ่น
เรื่องราว "Laptop Hunter" ยังคงมีน้อยลงเล็กน้อย Apple-bashing
วิธีการติดตั้ง postgresql บนเดเบียน 10
บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับขั้นตอนการติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PostgreSQL บน Debian 10 PostgreSQL หรือที่รู้จักกันทั่วไปว่า Postgres เป็นระบบจัดการฐานข้อมูลเชิงวัตถุแบบโอเพ่นซอร์ส
วิธีการติดตั้ง postgresql บนเดเบียน 9
PostgreSQL เป็นที่รู้จักกันง่าย ๆ ว่า Postgres เป็นระบบจัดการฐานข้อมูลเชิงวัตถุสัมพันธ์เชิงวัตถุแบบโอเพ่นซอร์ส ในบทช่วยสอนนี้เราจะแสดงวิธีการติดตั้ง PostgreSQL บน Debian 9 และสำรวจพื้นฐานของการบริหารฐานข้อมูลพื้นฐาน