การติดตั้ง MySQL บน RedHat แบบ RPM

รายละเอียดของบทความ
คัดลอกจาก http://www.itwizard.info
จัดทำเมื่อ
: 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.ขั้นตอนนี้ก็เป็นการดาวน์โหลดโปรแกรมครับ   ถ้ายังไม่ได้ดาวน์โหลดโปรแกรมมาก็ต้องดาวน์โหลดมาก่อนนะครับจาก http://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 ก็สามารถแก้ปัญหาได้ครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s