Diary of Mr.ZAM

June 15, 2005

การ config PostgreSQL บน ubuntu

ถึงแม้ว่า Ubuntu จะเป็น Linux ที่ใช้งานง่าย
ลงโปรแกรมง่าย เพียงแค่คำสั่ง apt-get install [ชื่อโปรแกรมที่ต้องการ]
หากว่ามันรู้จัก มันก็จะหามาติดตั้งให้โดยทันที


ด้วยปากของผม, มือของผม ในที่สุด ผมก็สำเร็จวิชาการลง PostgreSQL บน Ubuntu แล้วครับ :D

สิ่งที่ต้องการนำเสนอ

  • การติดตั้ง PostgreSQL
  • การติดตั้ง phpPgAdmin
  • การสร้าง user
  • การสร้าง database
  • การนำข้อมูลเข้าไปใส่ใน database
  • การลบ database
  • การแก้ไขไฟล์ pg_hba.conf
  • การ start, stop service

การติดตั้ง PostgreSQL
การติดตั้ง PostgreSQL บน Ubuntu นั้นไม่ได้ยุ่งยากอะไรเลยครับ เพียงแค่ใช้คำสั่ง

$sudo apt-get install postgresql

รอพักนึงให้เครื่องทำการ download โปรแกรมแล้วติดตั้งให้เราเอง ในช่วงนี้เราอาจจะชงกาแฟมาดื่มก็ได้ (ผมขอชาเขียวปั่น + วิปปิ้งครีมนะครับ ~^^~)

หลังจากที่ Ubuntu ติดตั้งโปรแกรมเสร็จแล้วนั้น สิ่งที่เราได้รับคือ ตัว HOME (ผมถือว่าเป็น ไดเร็กทอรี่หลักล่ะกันครับ) ของ PostgreSQL จะถูกติดตั้งอยู่ที่ /var/lib/postgres/ ครับ แล้วเราก็จะได้ user มาหนึ่งคน นั่นคือ user ที่ชื่อว่า postgres ครับ ถือว่า user เป็น super admin ของ PostgreSQL เลยก็ว่าได้ แล้ว HOME ของ user postgres ก็อยู่ที่ HOME ที่ติดตั้งเช่นเดียวกันครับ

เมื่อเราติดตั้ง PostgreSQL เสร็จแล้ว ถ้าเราทำการติดตั้งแบบ manual เอง เราจะต้องทำการ set $PGDATA ด้วยแล้วก็ initdb แต่สำหรับการลงบน Ubutu นั้น ไม่จำเป็นครับ ระบบทำการ initdb ให้เรียบร้อยแล้ว ที่เหลือเพียงแค่ว่า เราจะ create user ยังไง สร้าง db ยังไง หรือจะแก้ไข file config ยังไงเท่านั้นครับ

การติดตั้ง phpPgAdmin
ความต้องการของระบบ
- apache2 HTTP server + php4 การติดตั้งดูได้จากไกด์

หากว่าเราต้องการที่จะลง phpPgAdmin (เป็นระบบจัดการ db คล้ายกับ phpMyAdmin ครับ) อันไม่ยากเช่นกัน ให้พิพม์คำสั่ง

$sudo apt-get install phppgadmin

ขั้นตอนต่อไปก็รอให้ Ubuntu ติดตั้งเสร็จครับ ไฟล์ที่ติดตั้งจะไปอยู่ที่ /usr/share/phppgadmin อ่ะครับ

ถ้าคุณต้องการให้ Apache เห็นก็ สร้าง link ในไดเรกทอรี่ /var/www ด้วยคำสั่ง

$sudo ln -s /usr/share/phppgadmin /var/www/phppgadmin

ลองพิมพ์ http://localhost/phppgadmin ดูนะครับ

เท่านี้ก็เป็นอันเรียบร้อย แต่ว่าเราไม่สามารถที่จะเข้าไปใช้ PostgreSQL โดยใช้ user postgres ได้นะครับ ดังนั้นเราจำเป็นที่จะต้องสร้าง user เพื่อที่จะทำการ login เข้าไป

การสร้าง user
อืม ... เนื่องจากเหตุผลเรื่องความปลอดภัย phppgadmin จึงไม่อนุญาติให้ super user เข้ามา login ในส่วนนี้ ดังนั้นเราจึงควรสร้าง user ขึ้นมาใหม่ แต่ทั้งนี้ทั้งนั้น เราจะต้องเปลี่ยนชื่อ user ที่เราใช้งานอยู่นี้เป็นชื่อ user postgres

$sudo su postgres

หากต้องการเปลี่ยน password ของ postgres นั้น ควรจะเปลี่ยนตั้งแต่ก่อนจะเปลี่ยนมาเป็น user postgres

$sudo passwd postgres

หลังจากที่เปลี่ยนมาเป็น user postgres สามารถสร้าง user ของ PostgreSQL จากคำสั่ง

$createuser --pwprompt

   Enter name of user to add: username 
Enter password for new user: password
Enter it again: password Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
เท่านี้ก็ได้ user มาแล้วครับ พร้อมด้วย password

การสร้าง database
หลังจากที่เราสร้าง user ได้แล้ว .. เรายังสามารถสร้าง database ด้วยคำสั่ง

$createdb database_name

ซึ่งเราก็จะได้ database แล้วครับ

การนำข้อมูลเข้าไปใส่ใน database
ผมสาธิตตัวอย่างเดียวนะครับ เป็นตัวอย่างการเอาโครงสร้างข้อมูลที่เป็น file sql ไว้ใน database

$psql -d database_name -f path_file/file_name.sql

เรียบร้อยครับ

การลบ database
ใช้คำสั่ง (แต่ไม่ควรใช้ตอนนี้นะครับ ไม่งั้นได้สร้างใหม่ 5 5 5)

$dropdb database_name

เรียบร้อยครับ ..

การแก้ไข file pg_hba.conf
อันนี้ขั้นตอนยุ่งๆ นิดนึงนะครับ แต่วิธีการที่ทำมาทั้งหมดเราไม่สามารถที่จะ access เข้า PostgreSQL จาก ip ข้างนอกได้เลย นอกจาก teminal เอง วิธีการคือไปแก้ไข file pg_hba.conf ที่อยู่ใน /etc/postgresql/pg_hba.conf (อยู่ใน HOME ของ postgres จะมี link ไป file นี้ครับ)

ให้แก้บรรทัดที่เขียนว่า



# All other connections by UNIX sockets
local all all ident sameuser
#
# All IPv4 connections from localhost
host all all 127.0.0.1 255.255.255.255 ident sameuser



เป็น

# All other connections by UNIX sockets
local all all password
#
# All IPv4 connections from localhost
host all all 127.0.0.1 255.255.255.255 password
หลังจากนั้นให้ restart services ใหม่ครับ

การ start, stop service
- -" หัวข้อสุดท้ายแล้ว ... หากเราเป็น user postgres อยู่แล้ว ต้องการจะ start services ให้ใช้คำสั่ง

$pg_ctl -o "-i" -l logfile start

เป็นอันได้ start แล้ว แต่หากอยากจะ stop ก็ใช้คำสั่ง

$pg_ctl stop

เท่านี้ก็เป็นอันเรียบร้อย แต่เอ๊ะๆ ถ้าอยาก restart ล่ะ ก็ให้ใช้คำสั่ง

$pg_ctl reload

เท่านี้ก็เป็นอันเรียบร้อยครับ

ต้องขอขอบคุณ k.pongsakorn, k.seksit ที่ให้คำปรึกษาครับ

ref: http://sipx-wiki.calivia.com/index.php/PostgreSQL




TSAJ Community - Nagaoka