|
รายละเอียดของบทความ
จัดทำเมื่อ
: 29 เมษายน 2548
แก้ไขล่าสุดเมื่อ : 29 เมษายน
2548
ทดลองใช้งานบน : RedHat Fedora Core 3
(น่าจะใช้ได้กับ RedHat
เวอร์ชันอื่น ๆ ได้ด้วย)
ผู้เขียน : อดิศร
ขาวสังข์
บทนำ
หลายคนคงไม่พอใจกับเวอร์ชันต่ำ ๆ ของ MySQL
ที่ติดมากับแผ่น
และอยากจะได้เวอร์ชันใหม่ ๆ สำหรับการติดตั้ง
เช่นเดียวกับผู้เขียนที่มีความจำเป็นต้องเซ็ต
MySQL Server บน Fedora Core 3
ซึ่ง MySQL Server
ที่ติดมากับแผ่นของ FC3
ก็เป็นแค่เวอร์ชัน 3 กว่า ๆ
ก็เลยได้ติดตั้งเวอร์ชันที่ใหม่ล่าสุดในขณะที่เขียนบทความนี้
(4.1.11-0)
และคิดว่าอาจจะมีประโยชน์บ้างสำหรับใครบางคน
เลยได้จัดทำบทความนี้ขึ้นมา
สำหรับผู้ที่ใช้ RedHat
ที่ไม่ใช่ Fedora Core
ก็น่าจะนำไปประยุกต์ใช้ได้เช่นกันนะครับ
เพราะหลักการทุกอย่างเหมือนกัน
และในความเป็นจริงแล้ว
ตัวผู้เขียนเองก็ไม่ใช่จะมีความเชี่ยวชาญอะไรมากนักเกี่ยวกับ
MySQL
แต่ได้เซ็ตขึ้นมาใช้งานแล้วปรากฎว่าใช้งานได้ตามที่
user ต้องการ
ก็โอเคล่ะครับ !
ถ้ามีความผิดพลาดประการใดก็ต้องขออภัยด้วยก็แล้วกัน
หรือใครมีข้อคิดเห็นหรือข้อเสนอแนะ
ก็ส่งมาได้ที่อีเมล์ของ เว็บมาสเตอร์นะครับ
ขั้นตอนการติดตั้งและคอนฟิก
MySQL แบบ RPM
1. ถ้าท่านได้ลงติดตั้งได้ติดตั้ง
MySQL แบบ RPM
ที่ติดมากับแผ่นไว้ก่อนแล้วก็ต้องทำการ Remove
ออกไปเลยอาจจะ Remove
ด้วยคำสั่ง rpm -e
หรือ ใช้เมนู Add/Remove
Application ก็ได้ครับ
และหากว่า Remove
แล้วเจอปัญหาว่าแพ็กเกจบางตัวถูกใช้โดยอีกโปรแกรมหนึ่ง
ก็ให้ทำการ Remove
โปรแกรมนั้นออกก่อนครับ
ซึ่งที่ผมเจอก็คือแพ็กเกจบางตัวถูกใช้โดยโปรแกรม
dovecot ก็ต้องทำการ
Remove โปรแกรม dovecot
เสียก่อนจึงจะ Remove โปรแกรม
MySQL ได้ โดยการ
Remove ถ้าเป็น Remove
ผ่านเมนู Add/Remove
Application
ก็ให้เอาเครื่องหมายถูกที่ MySQL Database
ออกดังรูปข้างล่าง

2.ขั้นตอนนี้ก็เป็นการดาวน์โหลดโปรแกรมครับ
ถ้ายังไม่ได้ดาวน์โหลดโปรแกรมมาก็ต้องดาวน์โหลดมาก่อนนะครับจาก
www.mysql.com
ซึ่งการดาวน์โหลดต้องระวังนิดหนึ่งนะครับ
ว่าต้องให้เป็นแบบ RPM
ที่ตรงกับ Platform ของตัวเอง
ซึ่งในที่นี้ผมทดลองบนเครื่องที่เป็น PC
ธรรมดาเลยเลือกชนิดเป็น Linux
x86 RPM ดังรูปข้างล่าง
ซึ่งจากรูปจะเห็นว่ามีโปรแกรมในเวอร์ชันเดียวกันประกอบด้วยหลายโปรแกรม
แต่ในที่นี้เราจะเอาเฉพาะที่จำเป็นคือ ที่เป็น
Server กับ Client program
เท่านั้น
ส่วนโปรแกรมตัวผมก็ไม่แน่ใจเหมือนกันว่ามีความจำเป็นอย่างไรบ้าง
เอาเป็นว่าถ้าใช้งานไปซักพักหนึ่งแล้วเจอปัญหามีการเรียกร้องโปรแกรมต่าง
ๆ ขึ้นมาเราค่อยมาติดตั้งก็แล้วกัน

3. การติดตั้งโปรแกรม MySQL Server
เมื่อได้ทำการดาวน์โหลดโปรแกรมมาแล้วก็ได้ทำการติดตั้งตามรูปข้างล่างครับ

ในกรณีทที่ติดตั้งไม่ได้เพราะมีฟ้องว่ามีโปรแกรมตัวเดิมติดตั้งไว้ก่อนแล้ว
แต่ท่านพยายามที่จะ Remove
ออกก่อนแล้วซึ่งอาจจะ ไม่สามารถ Remove
ออกได้ทั้งหมด
หรืออาจจะด้วยเหตุผลอื่น ๆ
ก็สามารถใช้พารามิเตอร์ replacefiles
ได้ดังนี้ครับ
rpm -ivh --replacefiles
MySQL-server4.1.11-0.i386.rpm
และเมื่อใช้คำสั่ง rpm -q
เพื่อทำการตรวจสอบว่าเครื่องของเราติดตั้ง
MySQL Server แล้วยัง
สามารถทำได้ดังรูปข้างล่าง

จากรูปในขั้นตอนการติดตั้งจะมีการแนะนำให้เราทำการเปลี่ยนรหัสผ่านของ
root (ค่า default
password ของยูสเซอร์ที่เป็น
root จะไม่มี)
โดยใช้คำสั่ง :
/usr/bin/mysqladmin -u
root password 'new-password'
แต่จะไม่สามารถใช้คำสั่งดังกล่าวได้
เพราะเรายังไม่ได้ติดตั้งโปรแกรม MySQL-client
ดังรูปข้างล่าง

4. การติดตั้ง MySQL-client
ก็สามารถใช้คำสั่ง rpm
ได้ดังรูปข้างล่าง

และเมื่อทำการตรวจสอบว่ามีการติดตั้งโปรแกรม
MySQL Client บนเครื่องแล้วยัง
สามารถตรวจสอบได้ดังรูปข้างล่าง

จากนั้นลองทดสอบเรียกใช้งาน MySQL
โดยใช้ยูสเซอร์ root
แบบไม่มีรหัสผ่านดู
จะได้ดังรูปข้างล่าง (สามารถเรียกใช้งานด้วยคำสั่ง
mysql โดยไม่มี -u root
ต่อท้ายก็ได้นะครับ
ซึ่งเป็นการเรียกใช้งานในฐานะของ root
เช่นกัน)

5. การเปลี่ยนรหัสผ่านของ root โดยใช้คำสั่ง
/usr/bin/mysqladmin -u
root password 'new_password'
ซึ่งในที่นี้ผมใช้รหัสผ่านเป็น 'sedwidsawa'
ดังรูปข้างล่างครับ

เมื่อมีการเปลี่ยนรหัสผ่านของ
root แล้ว การเรียกใช้งาน
mysql
โดยไม่มีการกำหนดรหัสผ่านจะเรียกใช้งานไม่ได้ดังรูปข้างล่างครับ

ดังนั้นการเรียกใช้งานในฐานะ
root
ในครั้งต่อไปต้องมีการกำหนดรหัสผ่านด้วย
ดังรูปข้างล่าง

การเปลี่ยนระหัสผ่านของ root
สามารถทำได้อีกวิธีหนึ่งคือให้เรียกใช้งาน
mysql ก่อน หลังจากนั้นก็ให้ใช้คำสั่ง
update ฐานข้อมูล
mysql.user ดังรูปข้างล่าง

6. การเพิ่ม user
ใหม่ให้สามารถใช้งาน mysql ได้
ในความเป็นจริงแล้วยูสเซอร์ root
ที่ได้กล่าวมาสามารถเรียกใช้งาน
mysql ได้บนเครื่องเท่านั้น
(localhost)
ถ้าต้องการให้สามารถเรียกใช้งานจากเครื่องอืน ๆ หรือ
IP อื่น ๆ ได้
ก็ต้องมีการกำหนดสิทธิ์ ด้วยคำสั่ง grant
แต่ในที่นี้ผมจะกำหนดยูสเซอร์ที่เป็น
root
สามารถเรียกใช้งานจากเครื่องตัวเองเท่านั้น
และจะทำการเพิ่ม user
อีกคนที่สามารถเรียกใช้งานจากที่ไหนก็ได้ ด้วยคำสั่ง
grant ดังนี้ครับ

จากรูปเป็นการพิ่มยูสเซอร์ใหม่เข้าไปชื่อว่า
mysqladmin และมีรหัสผ่านเป็น
mysqladmin
โดยยูสเซอร์คนนี้สามารถเรียกใช้งาน MySQL
Server จากที่ไหนก็ได้
และมีสิทธิ์ในฐานข้อมูลทั้งหมด (grant all on
*.*)
ซึ่งถ้ายังใช้งานไม่ได้เลยทันทีอาจจะต้องใช้คำสั่ง
flush privileges;
เพิ่มเข้าไปด้วยครับ
คำสั่งข้างบนมีค่าเท่ากับคำสั่งต่อไปนี้ครับ
grant all on *.* to
mysqladmin@"%" identified by 'mysqladmin';
โดยเครื่องหมาย %
เป็น wildcards
ที่หมายถึงสามารถใช้งานจากชื่อโฮสต์หรือ IP
ไหนก็ได้
หรืออาจจะกำหนดเป็นช่วงของ IP
โดยใช้รูปแบบดังต่อไปนี้ เช่น
user@"172.24.51.%"
หรือ user@"%.mysite.com"
และในกรณีที่ต้องการยูสเซอร์ดังกล่าวมีสิทธิ์ที่จะสามารถมอบสิทธิ์เท่าที่ตนมีให้แก่ผู้อื่นได้
ก็ให้เพิ่มคำว่า
with grant option
ต่อท้ายคำสั่งข้างบน
7.
ติดตั้งโปรแกรมที่จำเป็นเพิ่มเติม
จากการที่ได้ค้นหาข้อมูลในเว็บ การติดตั้ง
MySQL
ส่วนใหญ่แล้วจะมีการติดตั้งโปรแกรมเพี่มเติมอีก 2
ตัวคือ
-
MySQL-shared
(MySQL-devel-4.1.11-0.i386.rpm - Dynamic client
libraries)and header files
- MySQL-devel-4.1.11-0 (MySQL-shared-4.1.11-0.i386.rpm
- Libraries)
การติดตั้งก็ให้ใช้คำสั่ง rpm -ivh
ตามด้วยชื่อไฟล์เช่นเดิมครับ
8. ปรับแต่งคอนฟิกให้เหมาะสม
8.1 ทำการก็อปไฟล์ดังนี้ :
#cp /usr/share/mysql/my-medium.cnf
/etc/my.cnf
8.2 ให้เปิดไฟล์ /etc/my.cnf
ขึ้นมา และที่ประมาณบรรทัดที่
38 (ใต้บรรทัดที่มีข้อความว่า
myisam_sort_buffer_size = 8M) ให้แทรกข้อความต่อไปนี้
1 บรรทัด
default-character-set =
tis620
8.3 ที่ประมาณบรรทัดที่ 49
ให้เอาเครื่องหมาย #
ไว้หน้าคำว่า log-bin
8.4 ที่ประมาณบรรทัด 120-132
ให้เอาเครื่องหมาย #
ที่นำหน้าคำว่า innodb_
ออกทั้งหมด 10 บรรทัด
8.5 ที่ประมาณบรรทัด 137 (ใต้บรรทัดที่มีข้อความว่า
max_allowed_packet = 16 m)
ให้เพิ่มข้อความต่อไปนี้ 1 บรรทัด
allow-keywords
8.6 ทำการ start
หรือ restart mysql ครับ
9.
วิธีการแก้ปัญหาเมื่อใช้งานโปรแกรม MySQL
client อื่น ๆ
แล้วเจอปัญหาเรื่องการไม่ซัพพอร์ต
authentication protocol
เช่นการใช้งานโปรแกรม MySQL-Front
เวอร์ชัน 2.5 หรือโปรแกรม
phpmysadmin ซึ่งอาจจะเจอปัญหาฟ้องว่า
Client does not support
authentication protocol requested by server;
consider upgrading mysql client.
ซึ่งวิธีการแก้ปัญหาก็ต้อง
update
รหัสผ่านให้เป็นแบบเก่าโดยใช้คำสั่งดังนี้ :
mysql>update mysql.user set password =
old_password('password') where host = 'somehost' and
user = 'some user';
mysql>flush privileges;
เช่น :
mysql>update mysql.user
set password = old_password('somsak') where host =
'%' and user = 'somsak';
mysql>flush privileges;
ซึ่งคำสั่งข้างบนมีค่าเท่ากับ :
mysql>update mysql.user
set password = old_password('somsak') where user = 'somsak';
mysql>flush privileges;
10. การแก้ปัญหาเมื่อใช้งานกับ phpmyadmin
ในกรณีที่เจอปัญหาฟ้องข้อความดังต่อไปนี้
10.1
cannot load mysql
extension;
please check PHP configuration
ที่เป็นแบบนี้เพราะตอนนี้เรายังไม่ได้ติดตั้งโปรแกรม
php-mysql หรืออาจจะมถูก
remove ออกเมื่อมีการลบ mysql
เวอร์ชันเก่า
วิธีการแก้ปัญหาทำได้ด้วยการติดตั้งโปรแกรมตัวนี้เข้าไปซึ่งจะอยู่ที่แผ่นที่
1 ดังนี้:
rpm -ivh
php-mysql-4.3.9-3.i386.rpm
แต่ถ้าติดตั้งไม่ได้คือมีฟ้องว่าโปรแกรมตัวนี้มีความต้องการต้องใช้
libmysqlclient.so.10
ก็ให้ทำการติดตั้งโปรแกรม MySQL-shared-compat
ด้วย ซึ่งถ้าได้ติดตั้งโปรแกรม
MySQL-shared ก็ให้ทำการ
remove ออกไป
10.2 ถ้ามีปัญหาเกี่ยวกับ
mysql.sock
ผมไม่แน่ใจวิธีการแก้ที่ถูกต้องนะครับ
แต่ที่ผมพอจะแก้ได้ก็คือ ในการเรียกใช้งานจากโปรแกรม
phpmysadmin อย่ากำหนดชื่อ
host เป็น localhost
ให้กำหนดเป็น ip address
ก็สามารถแก้ปัญหาได้ครับ
----จบครับ--- |