การกำหนด Configuration สำหรับฐานข้อมูล PostgreSQL บน Ubuntu 20.04 ให้สามารถเข้าถึงผ่าน ip address จากภายนอก
สำหรับเครื่องที่ใช้ เป็นระบบปฏิบัติการ Windows 10 ดังนั้นเราจำเป็นต้องติดตั้ง Hyper-V ซึ่งเป็น Virtualization ของ Windows เอง ดั้งนั้นของที่มีก็ใช้แบบไม่ต้องไปหาอื่นไกล ส่วนการติดตั้ง Hyper-V และติดตั้ง Ubuntu 20.04 ไม่ขอกล่าวถึง
เปิด Terminal แล้วเรียกใช้คำสั่ง ifconfig ดู ip address แล้วจดไว้เพื่อจะ Connect เข้าถึงข้อมูล
เมื่อติดตั้ง Ubuntu ใน hyper-v เสร็จก็ไปทำการติดตั้ง PostgreSQL ต่อเลยโดยเข้าไปดูตาม Link ด้านล่างได้เลย 555
https://www.cherryservers.com/blog/how-to-install-and-setup-postgresql-server-on-ubuntu-20-04
ทำการเปิด firewall ให้กับ port ที่ต้องการ เช่น 5432 โดยพิมพ์คำสั่ง ดังนี้
sudo ufw allow from any to any port 5432 proto tcp
* สั้ง List รายการเพื่อตรวจสอบว่า port เปิดหรือไม่
sudo lsof -i -P -n | grep LISTEN
ติดตั้งเสร็จ ให้เข้าไปแก้ไข config เพิ่มเติ่มจากเว็บก่อนหน้าที่ให้กำหนดไว้ โดยพิมพ์คำสั่งที่ Terminal
sudo vim /etc/postgresql/14/main/postgresql.conf
แล้วแก้ ตรงส่วนของ listen_addresses = 'local' ให้เป็น
listen_addresses = '*'
จากนั้นไปแก้ไฟล์ pg_hba.conf
sudo vim /etc/postgresql/14/main/pg_hba.conf
แล้วเพิ่มสิทธิ์เข้าไปตามนี้ หรือจะกำหนดเฉพาะไอพีก็ได้ แต่สำหรับตัวอย่างข้างล่างคือเปิดหมด
host all all 0.0.0.0/0 scram-sha-256
host all all ::1/128 trust
host all all 127.0.0.1/32 trust
ทำเสร็จก็ทำการ restart service ด้วยคำสั่ง
systemctl restart postgresql
เสร็จสำหรับ Ubuntu และ PostgreSQL
------------------------------
จากนั้นไปที่เครื่อง Client ที่เราต้องการติดต่อที่ Windows 10
ไปทำการดาวน์โหลด ODBC มาลงที่เครื่อง ที่เว็บ
https://www.postgresql.org/ftp/odbc/versions/msi/
ให้เลือกตัวใหม่ ๆ แล้วเลือก 32 bit หรือ 64 bit ขึ้นอยู่กับโปรแกรมที่เราจะติดต่อว่าเป็น 32 bit หรือ 64 bit ก็ลงตามนั้น
ส่วนการติดต่อก็ผ่าน connection string ประมาณนี้
Driver={PostgreSQL Unicode};Server=172.18.117.166;Port=5432;Database=ชื่อDatabase;Uid=postgres;Pwd=รหัสผ่าน;
ตัวอย่างโปรแกรมที่ใช้เขียนเพื่อติดต่อฐานข้อมูล
cPostgreSQL = [Driver={PostgreSQL Unicode};Server=172.18.117.166;Port=5432;Database=test_erp;Uid=postgres;Pwd=12345555;]
nHandle = SQLSTRINGCONNECT(cPostgreSQL)
IF nHandle > 0
TEXT TO cSQL NOSHOW TEXTMERGE
SELECT * FROM clients
ENDTEXT
nSuccess = SQLEXEC(nHandle,cSQL)
IF nSuccess > 0
** นำข้อมูลมาแสดงข้อมูล
ENDIF
=SQLDISCONNECT(nHandle)
ENDIF
ไม่มีความคิดเห็น:
แสดงความคิดเห็น