5 นาทีกับ Postgres

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


มาปัดฝุ่นกับการเซ็ต Postgres บน Linux อีกครั้ง ครั้งนี้ติดตั้งบน Ubuntu ซึ่งรันอยู่ใน Vmware เป็น guest ของเครื่อง Windows อีกทีหนึ่ง.

ก่อนอื่นต้องเซ็ตให้ locale ของตัวเองเป็นภาษาไทยก่อน ในระบบ default อาจจะเป็นภาษาอังกฤษก็ได้ แต่ตอน apt-get install จะมีการสร้าง database (initdb) ด้วยซึ่งมันจะรองรับภาษาไทยหรือไม่ขึ้นอยู่ที่ตอนสร้าง database อันนี้ ของผมที่ต้องการใช้คืออยากให้ Postgres เก็บข้อมูลเป็น UTF8 และ sort ภาษาไทยได้ด้วย

# export LANG=th_TH.UTF-8
# apt-get install postgresql-8.1 phppgadmin

ติดตั้ง phppgadmin ด้วยเพื่อที่จะได้ควบคุม database ผ่านทางเว็บได้ด้วย. ส่วนใหญ่ก็ใช้ update ข้อมูล, backup, restore ผ่านทางนี้ก็ได้.

phppgadmin

ก่อนติดตั้ง phppgadmin ก็ขอให้แน่ใจว่า apache ที่ใช้อยู่รองรับ php และ php นั้นมี driver ของ Postgres ด้วย.

ผมลง phppgadmin แล้วแต่เข้า http://ubuntu/phppgadmin ไม่ได้ (ubuntu เป็นชื่อ hostname ตอนเข้าจาก Windows ตั้งค่าไว้ที่ c:\windows\system32\drivers\etc\hosts) ก็พบว่า apache มันไม่ยอมอ่าน configure ของ phppgadmin ที่อยู่ใน /etc/phppgadmin/apache.conf เลยต้องทำแบบนี้

# ln -s /etc/phppgadmin/apache.conf /etc/apache2/conf.d/phppgadmin
# /etc/init.d/apache2 restart

คือพูดง่ายๆว่า apache2 ตอน startup มันจะไปอ่านไฟล์ที่อยู่ใน /etc/apache2/conf.d ทั้งหมดซึ่งในนั้นมี Apache Directive Alias /phppgadmin ไปที่ /usr/share/phppgadmin ด้วย. แต่ก็ยังเข้าจาก Windows ไม่ได้ต้องไปแก้ /etc/phppgadmin/apache.conf ตรง

order deny,allow
deny from all
#allow from 127.0.0.0/255.0.0.0
allow from all

ให้ access http://ubuntu/phppgadmin จากเครื่องที่ไม่ใช้ localhost ได้ด้วย (ในกรณีนี้เข้าจาก host operating system).

เตรียม user ให้ Postgres

หลังจากที่ติดตั้ง Postgres แล้วจะมี user พิเศษชื่อ postgres เป็นตัวจัดการ database. เราจะสร้าง user สำหรับ database จาก account นี้.

$ sudo -i
$ su - postgres
$ createuser -P dbuser
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) y
CREATE ROLE

createuser เป็นคำสั่งสร้าง user สำหรับใช้ Postgres ใช่ -P ให้มันตั้ง Password ให้ด้วย. ในตัวอย่างเป็นการขี้เกียจ (ไม่ควรทำ) สั่งให้ dbuser เป็น superuser ไปเลย.

เสร็จแล้วแก้ไฟล์ /etc/postgresql-8.1/main/pg_hba.conf เพิ่ม

host all all 127.0.0.1/32       trust sameuser

แถวบรรทัดที่ 74 เป็นการอนุญาิตให้ต่อ database ผ่านทาง phppgadmin. Restart Postgres หนึี่งครั้ง. หลังจากนั้นก็จะเข้า Postgres ผ่าน phppgadmin ได้.

สร้าง database

เอาแบบทุ่นแรงก็สร้างด้วย phppgadmin มีเมนูเลือกให้สร้าง create database. ตอนที่สร้างก็เลือกเป็น UTF8 ไปเลยจะได้ support ภาษาไทยแบบ internationalization และ sort ได้ด้วย.