13 พฤษภาคม 2565

PostgreSQL : กำหนดให้ postgresql เก็บ log คำสั่ง SQL

การกำหนดให้ PostgreSQL เก็บ log คำสั่ง SQL

1. เข้าไปที่แก้ไขไฟล์ postgresql.conf กรณีใช้ postgresql 14 ถ้ารุ่นอื่นก็เปลี่ยนตัวเลขรุ่นตามต้องการ โดยป้อนคำสั่งผ่าน Terminal

        
sudo vim /etc/postgresql/14/main/postgresql.conf

        จากนั้น ไปหาและแก้ไขค่าตามนี้          

      

        กดปุ่ม i เพื่อเข้าโหมด insert ของ โปรแกรม vim แล้วแก้ไข

         log_destination = 'csvlog'
         logging_collector = on
         log_directory = 'pg_log'
         log_filename = 'test_postgresql-%Y-%m-%d_%H%M%S.log'
         log_statement = 'all'

         เมื่อแก้ไขเสร็จให้กดปุ่ม Esc เพื่อออกจากโหมดแก้ไข
         กด   
:w       บันทึก
          กด   
:q        ออก

2. ทำการ รีสตาร์ทเซอร์วิสของ postgresql ใหม่ ด้วยคำสั่ง

         sudo systemctl restart postgresql

จากนั้นไป เมื่อมีการใช้คำสั่ง SQL จัดการกับฐานข้อมูลก็จะถูกเก็บ log ไว้ที่          

        /var/lib/postgresql/14/main/   ภายใต้โฟลเดอร์ pg_log

เรียกดูไฟล์

        sudo ls -l /var/lib/postgresql/14/main/pg_log/

เมื่อพบไฟล์เป้าหมาแล้ว ก็เอาออกมาไว้ที่อื่น เช่น โฟลเดอร์ Desktop

        sudo cat /var/lib/postgresql/14/main/pg_log/ชื่อไฟล์log.csv > Desktop/ชื่อไฟล์log.csv

เป็นอันเรียบร้อย  


03 พฤษภาคม 2565

PostgreSQL : กำหนด Configuration สำหรับฐานข้อมูล PostgreSQL บน Ubuntu 20.04 ให้สามารถเข้าถึงผ่าน ip address จากภายนอก

การกำหนด 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


"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.