Google


Monthly Archive for October, 2005

แก้ไขปัญหา Client does not support authentication protocol ใน MySQL

ใน MySQL 4.1 ขึ้นไปนั้น ได้ใช้ hashing algorithm ในการเก็บ password เพื่อใช้ในการ Authentication Protocol แบบใหม่ซึ่งทำให้ยังไม่สนับสนุนใน PHP หรือ software client ใน version เก่าๆ (หรือใหม่ๆ บางตัวก็ยังไม่สนับสนุน) ถ้าคุณ upgrade ไปเป็น MySQL 4.1 หรือสูงกว่า การติดต่อเพื่อเข้าไปใช้งานนั้น จะขึ้นข้อความว่า

Client does not support authentication protocol requested by server; consider upgrading MySQL client.

สาเหตุมาจากการที่ MySQL ได้ทำการปรับเปลี่ยนการเข้ารหัส password ใหม่อย่างที่ได้กล่าวไปแล้วโดย ถ้าใน MySQL version ก่อน 4.1 นั้นใช้การเข้ารหัสที่มีความยาว 16 bytes แต่ใน version ตั้งแต่ 4.1 ขึ้นมาถึงปัจจุบันนี้จะใช้การเข้ารหัสที่มีความยาว 41 bytes ซึ่ง client บางตัวยังไม่สนับสนุน password hashing algorithm แบบนี้ครับ ซึ่งการเข้ารหัส password ที่มีความยาว 41bytes นี้จะทำให้การถอดรหัสเพื่อทำการ hack ข้อมูลนั้นทำได้ยากขึ้นมากเลยทีเดียวครับ 

โดยถ้าเราเปรียบเทียบจากตัวก่อนหน้า version 4.1 จะได้

mysql> SELECT PASSWORD(‘mypass’);
+——————–+
| PASSWORD(‘mypass’) |
+——————–+
| 6f8c114b58f2ce9e |
+——————–+

แต่ถ้าเราใช้คำสั่งเดียวกันใน version หลังจาก 4.1 จะได้

mysql> SELECT PASSWORD(‘mypass’);
+———————————————–+
| PASSWORD(‘mypass’) |
+———————————————–+
| *43c8aa34cdc98eddd3de1fe9a9c2c2a9f92bb2098d75 |
+———————————————–+

จะเห็นความแตกต่างของการเข้ารหัส password ของ MySQL ครับ

การแก้ไขปัญหานี้ทำได้โดยการ

  • ทำการ upgrade ตัว client ที่ติดต่อกับ MySQL ให้เป็น version ที่สนับสนุน hashing algorithm ที่เก็บ password ใหม่ใน MySQL 4.1 ขึ้นไป (client ที่ว่านี้หมายถึง PHP MySQL Module, MySQL Front, PHPMyAdmin และตัวจัดการข้อมูลต่างๆ ที่เชื่อมต่อกับ MySQL ถือเป็น client ทั้งหมดครับ)

  • เมื่อทำการติดต่อกับ server โดยใช้ pre-4.1 client program ให้ใช้บัญชี username ที่ใช้ pre-4.1-style password แทนการใช้ username ที่ใช้ style password แบบเก่า

  • ทำการ Reset password ไปเป็น pre-4.1 style โดยใช้คำสั่ง SET PASSWORD และ OLD_PASSWORD() function โดยทำใน MySQL Command Line Client ซึ่งใช้คำสั่งดังนี้

mysql> SET PASSWORD FOR

-> ‘some_user‘@’some_host‘ = OLD_PASSWORD(‘newpwd‘);

  • some_host ให้เปลี่ยนเป็น hostname ที่ใช้เช่น localhost, 127.0.0.1, 192.168.0.1 หรือที่เป็น hostname นั้นๆ
  • some_user ให้เปลี่ยนเป็น username ที่ใช้เช่น root, admin หรือ username อื่นๆ ที่ต้องการ
  • newpwd ให้เป็นเป็น password ที่ใช้เช่น 1234, abcde หรือที่ต้องการ

ตัวอย่าง :

mysql> SET PASSWORD FOR

-> ‘root‘@’localhost‘ = OLD_PASSWORD(‘1234‘);

คือกำหนด password ใหม่ให้กับ root ที่ localhost โดยใช้ hashing algorithm password แบบเก่าโดยกำหนด password คือ 1234

แล้วทำการ UPDATE และ FLUSH PRIVILEGES โดยใช้สั่ง

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘newpwd‘)

-> WHERE Host = ‘some_host‘ AND User = ‘some_user‘;

mysql> FLUSH PRIVILEGES;

ตัวอย่าง :

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘1234‘)

-> WHERE Host = ‘localhost‘ AND User = ‘root‘;

mysql> FLUSH PRIVILEGES;

* ด้วยวิธีด้านบนนี้เหมาะสำหรับใช้ในกรณีที่มี user ที่อยู่ในฐานข้อมูลน้อยๆ เท่านั้น มิเช่นนั้นแล้วอาจจะต้องเปลี่ยนกันมืองึก -_-"

  • ถ้ามี user ในฐานข้อมูลมากๆ และการปรับเปลี่ยนวิธีด้านบนทั้งหมดเป็นการยากในการทำระบบฐานข้อมูลกลับมาใช้งานได้ปกติในเวลาอันสั้น เราสามารถบอกให้ MySQL ใช้ password hashing algorithm แบบเก่าตอน start-up service ได้เลย แต่แนะนำให้ใช้งานชั่วคราวเท่านั้นครับ และเมื่อมีเวลาให้ทำการปรับเปลี่ยนไปใช้ระบบ password hashing algorithm แบบใหม่แทน

    โดยเริ่มการทำงานของ mysqld ด้วย –old-passwords ที่เป็น option command

    ตัวอย่าง :

    c:\MySQL\bin\mysqld –old-passwords

อ้างอิงจาก A.2.3. Client does not support authentication protocol ใน MySQL 5.0 Reference Manual

MySQL 5.0 (build 15) Full Release !!!

อาจจะเก่าไปนิดแต่ว่าไม่น่าจะนานมาก เมื่อวันที่ 24 ตุลาคม 2548 ที่ผ่านมา MySQL AB ได้เปิดตัว MySQL 5.0 ซึ่งเป็นการเปลี่ยนแปลงครั้งใหญ่ในรอบหลายๆ ปีของ MySQL AB เลยทีเดียว เพราะว่าตัว MySQL 5.0 นั้นมีคุณสมบัติในระดับองค์กร (Enterprise) ซึ่งต้องการความน่าเชื่อถือสูงมาก ตามมาตรฐาน SQL 2003 เลยทีเดียว โดยคุณสมบัติที่เพิ่มเติม มาก็ได้แก่ Stored Procedures, SQL Functions, Triggers, Views, Cursors, XA Distributed Transactions, ตัวเลือกระบบบีบอัดข้อมูล (federated and archive storage options), SQL Mode, ฯลฯ อ่านเพิ่มเติมที่นี่ครับ http://dev.mysql.com/doc/refman/5.0/en/mysql-5-0-nutshell.html

ซึ่งทำงานได้บน Linux, Windows, Solaris, Mac OS X, FreeBSD, HP-UX, IBM AIX 5L, ฯลฯ

MySQL 5.0 นี่อยู่บนข้อตกลง Open Source (GPL) หรือ Commercial MySQL Licenses ซึ่งทำงานตาม concept ของเค้าว่า high-performance, reliability และ ease-of-use ครับ

เพราะว่าตอนนี้ MySQL ไม่เหมือนเมื่อก่อนแล้วครับ ในด้านการจัดการระบบต่างๆ นั้นแทบจะไม่ต้อง set ผ่าน text files แบบเดิมๆ ครับ ทำงานผ่าน wizard ได้เลย ส่วนถ้าต้องการละเอียดมากขึ้นก็ไปโหลด MySQL Administrator จากเว็บ MySQL มาเพื่มเพื่อทำงาน และปรับแต่งต่างๆ ได้ทั้งหมดครับ รวมไปถึงเครื่องมือในการทดสอบ Query ข้อมูล MySQL Query Browser เพื่อทดสอบ SQL ที่เราจะทำงานได้จากซอต์แวร์นี้ครับ ทำงานได้ง่ายมากๆ เลยครับ และส่วนใครจะทำการย้ายฐานข้อมูล MySQL ก็ใช้เครื่องมือ MySQL Migration Toolkit ได้อีกเช่นกันครับ อันนี้ยังไม่ได้ลองทดสอบแต่อย่างใด ถ้าใครใช้แล้วเป็นยังไง ก็ Comment ไว้ครับ

จากที่ได้ลองใช้ดูนั้น การทำงานถือว่าเสถียรดีมาก แต่ว่าผมยังไม่ได้ลองให้มันทำงาน load สุดๆ เลยยังไม่รู้ว่าจะเสถียรกว่าตัวเก่าหรือเปล่า แต่ด้วยระบบที่ใหม่กว่า ไม่น่าจะมีอะไรผิดพลาดแต่อย่างใด

ในการใช้งานตอนนี้ของผมนั้นทำงานบน Storage Engine แบบ InnoDB เพราะว่าผมต้องใช้งาน Transaction ของ DBMS ด้วย ซึ่งจากตัว MySQL 4.1.13 ที่ได้ใช้มาก่อนหน้านี้ก็ทำงานได้ไม่มีที่ติ


อันนี้แนะนำเพิ่มเติมครับ เป็นเครื่องมือในการออกแบบ Database ที่มีประสิทธิภาพมากๆ ตัวหนึ่งเลยทีเดียวครับ มันชื่อว่า fabFORCE DBDesigner 4 (http://www.fabforce.net/) ครับ เจ้า DBDesigner 4 มันเป็นระบบออกแบบฐานข้อมูลแบบเสมื่อนจริง (Visual Database Design System) ที่ดีมากๆ เลย ซึ่งเหมาะสำหรับการออกแบบและการสร้างฐานข้อมูลในรูปแบบ ER-Diagram ซึ่งสามารถทำการจัดการได้โดยตรงจาก Model ได้เลย แถมเชื่อโยงความสัมพันธ์ได้ง่ายมากๆ เลยครับ รวมไปถึง Export ให้ทำงานร่วมกับฐานข้อมูล MySQL, Oracle, MSSQL, SQLite และ ODBC

ซึ่งซอฟค์แวร์ตัวนี้อยู่บนข้อตกลงของ Open Source Project (GPL) สนับสนุนการทำงานบน Microsoft Windows 2k/XP และ Linux KDE/Gnome

โดยที่ความต้องการของระบบในการทำงานนั้นน้อยมาก ไม่ต้องใช้ระบบที่สูงมากนัก แถมทำงานได้เร็วอีกต่างหาก ไม่แฮงง่ายด้วยครับ


แต่ทั้งนี้ทั้งนั้น ถึงแม้จะมี Toosl มาช่วยให้เราบริหารระบบ DBMS มากมายแค่ไหน ถ้าเราไม่เข้าใจว่าเราจะเอามันมาใช้งานยังไงให้เกิดประโยชน์สูงสุดแล้ว ผมว่าก็น่าเสียดายความสามารถเหล่านั้น แถมความสามารถเหล่านี้ก็ไม่ต้องซื้อหาจากที่ไหน เพราะว่าทั้งหลายทั้งบวงที่ได้กล่าวมานั้นอยู่บนข้อกำหนด GPL แทบทั้งสิ้นครับ

Apple เดินแผนเก็บเงินส่วนแบ่งจากผู้ผลิตอุปกรณ์เสริมให้ iPod

Apple Computer เริ่มที่จะดำเนินการเก็บเงินค่าลิขสิทธิ์ จากบริษัทผู้ผลิตอุปกรณ์เสริมต่างๆที่ใช้เชื่อมต่อกับเครื่องเล่นเพลงดิจิตอล iPod แล้ว หลังจากที่ดูผู้ผลิตรายอื่นทำรายได้จากการผลิตอุปกรณ์เสริม ที่เชื่อมต่อกับเครื่องเล่นเพลง iPod มาเป็นระยะหนึ่งแล้ว Apple ก็ตัดสินใจที่จะทำการเก็บเงินค่าลิขสิทธิ์ จากบริษัทที่ผลิตอุปกรณ์เสริมสำหรับ iPod รุ่นต่างๆแล้ว โดยจะเก็บเงินจากผู้ผลิตอุปกรณ์เสริมที่จะต้องเชื่อมต่อเข้ากับ iPod ผ่านทางพอร์ทเชื่อมต่อเท่านั้น สำหรับเคสหรืออุปกรณ์เพิ่มความสวยงามต่างๆนั้นจะยังไม่ถูกเก็บค่าลิขสิทธิ์นี้ ซึ่งผู้ผลิตที่จ่ายเงินให้กับ Apple แล้วก็จะสามารถนำโลโก้ "Made for iPod" ไปติดที่สินค้าของตนได้ โดยบริษัทที่จ่ายเงินให้กับ Apple ก็จะได้รับการสนับสนุนทางเทคนิค รวมถึงข้อมูลใช้งานต่างๆของพอร์ทเชื่อมต่อที่ใช้ใน iPodด้วย แต่อย่างไรก็ตามยังไม่มีการเปิดเผยว่า Apple จะมีมาตรการอย่างใดต่อบริษัทที่ไม่ยอมจ่ายค่าลิขสิทธิ์นี้ ซึ่งขณะนี้ก็มีบริษัทหลายรายที่ตอบตกลงที่จะจ่ายเงินให้กับ Apple แล้วถึงแม้ว่าค่าลิขสิทธิ์ดังกล่าว จะค่อนข้างเป็นจำนวนเงินสูงมากก็ตาม โดยขณะนี้ทาง Apple เองก็ปฏิเสธที่จะเปิดเผยถึงรายละเอียดในการเก็บเงินดังกล่าว แต่ก็มีแหล่งข่าวใกล้ชิดของ Apple เปิดเผยว่าค่าลิขสิทธิ์ดังกล่าวนั้นจะเก็บเป็นส่วนแบ่งจำนวน 10เปอร์เซ็นต์จากยอดจำหน่ายของอุปกรณ์เสริมนั้นๆ http://www.pantip.com/tech/newscols/news/191005b.shtml —————–

จากการวิเคราะห์ของผมเองแล้วเนี่ย ราคาอุปกรณ์เสริม คงจะไม่สูงขึ้นมากไปกว่า 5% จากราคาเดิม ใน lot การผลิตต่อไปหลังจากที่ทำการเซ็นสัญญากับ Apple แล้ว

แล้วผลประโยชน์ที่ได้รับ น่าจะมากกว่า เพราะว่าได้รับข้อมูลด้านระบบเชื่อมต่อจาก Apple โดยตรงแทนการ Re-engineering แบบเก่า ทำให้น่าจะมีผลกับอุปกรณ์เสริมที่หลากหลายมากขึ้น เราอาจะได้เห็นอุปกรณ์เสริม สำหรับฟัง FM ได้ในอนาคต หรืออุปกรณ์อื่นๆ ที่เสริมการทำงาน พวก Bluetooth ที่ใส่กับ iPod ได้ด้วยครับ ซึ่งทั้งหมดทั้งปวงน่าจะก่อให้เกิดความน่าเชื่อถือในคุณภาพสินค้า ที่ผลิตออกมาได้ดีขึ้นครับ คล้ายๆ กับ Stricker ที่เป็นตรา Intel inside หรือพวก Design for Windows อะไรพวกนี้ครับ