GORAGOD.com

การกำหนดรหัสผ่านของ phpMyAdmin

หากเราติดตั้ง phpMyAdmin ตามปกติ ที่มาพร้อมกับ Appserver หรือ XAMPP เราอาจกรอกรหัสผ่านของ MySQL เป็นค่าว่างไว้ หรืออาจกรอกรหัสผ่านแบบง่ายๆไว้ ซึ่งถ้าหากเราใช้งาน MySQL คนเดียวบน localhost ก็คงไม่เท่าไรหรอกครับ เนื่องจากคงไม่มีใครมายุ่งกับ MySQL ของเราได้ แต่หากเรากำหนดให้เครื่องของเราเป็น Web Server แล้วละก็ การกำหนดรหัสผ่านจะจำเป็นอย่างยิ่งครับ เนื่องจากทุกคนสามารถเข้าถึง phpMyAdmin หรือ MySQL ของเราจากที่ใดก็ได้ ผมยกตัวอย่าง ใครที่ได้ทำการสร้าง Web Server ไว้ในตอนก่อนหน้า ลองเรียก phpMyAdmin ดู http://demo.dydns.com/phpmyadmin ถ้าสามารถเข้าได้ละก็พึงระลึกไว้เลยว่า ใครๆที่ต่อเน็ตได้ก็สามารถเข้าถึงข้อมูลเหล่านี้ได้เช่นกัน
การตั้งรหัสผ่านของ root ของ MySQL บนวินโดวส์
เข้าเมนู Start->Run พิมพ์ cmd.exe เพื่อเรียกหน้าต่าง Command Prompt (DOS) ครับ
  1. พิมพ์ c:\xampp\mysql\bin\mysql -u root mysql กด Enter สำหรับเครื่องที่ไม่เคยตั้งรหัสผ่านมาก่อน ซึ่งจะมีค่าว่างเป็น รหัสผ่านโดยปริยาย (c:\xampp คือ path ของ WebServer ที่ติดตั้งไว้ครับ หากกำหนดไม่เหมือนนี้ให้กำหนดค่านี้ให้ถูกต้องครับ)
  2. พิมพ์ SET PASSWORD FOR root@localhost=PASSWORD(’newpassword’); กด Enter สำหรับกำหนดรหัสผ่านใหม่ที่ newpassword
  3. ออกจาก mysql โดยการพิมพ์ quit และกด Enter ครับ
หากต้องการเข้า mysql อีกครั้งจะต้องพิมพ์ mysql -u root -p mysql และกด Enter จะมีคำถามถามรหัสผ่าน ก็ให้กรอกรรหัสผ่านที่ตั้งไว้ลงไปครับ
หลังจากที่เรากำหนดรหัสผ่านให้กับ root ของ MySQL แล้ว เราอาจไม่สามารถเข้า phpMyAdmin ได้นะครับ เราจะต้องทำการ config phpMyAdmin ให้ถูกต้องก่อน ถึงจะเข้าได้ครับ
การกำหนด config ให้กับ phpmyAdmin
เปิด C:\xampp\phpMyAdmin\config.inc.php ด้วย Text Editor ดูบรรทัดประมาณนี้
/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysql';

ค่าที่เราสามารถกำหนดได้มีดังนี้
$cfg['Servers'][$i]['auth_type'] = 'config';

ค่าที่เป็นไปได้ สำหรับ คำสั่งนี้คือ
  • config เป็นค่า default เหมาะสำหรับการใช้งนบน localhost โดยทั่วไป หากใช้งานค่านี้จะไม่มีการถามรหัสผ่านก่อน แต่หากมีการกำหนดรหัสผ่านของ root อาจจะทำให้ไม่สามารถเข้าใช้ phpMyAdmin ได้
  • http ถ้าใช้ค่านี้ จะต้องLogin ผ่านหน้าต่าง HTTP Authentication เหมาะสำหรับการใช้งานบน Server ทั่วไปที่มีผู้ใช้หลายคน (multi user)
  • cookie ค่านี้จะเหมือนกับ ข้อ 2 คือมีการถามรหัสผ่าน ผ่านหน้าเว็บแบบทั่วๆไป ซึ่งมีข้อแตกต่างที่สามารถจำการ login ผ่าน cookie ได้
$cfg['Servers'][$i]['password'] = '';

ให้กำหนดรหัสผ่านที่ตั้งใหม่ให้กับค่านี้ครับ
/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'yourpassword';
$cfg['Servers'][$i]['extension'] = 'mysql';

กำหนด auth_type แบบที่ 2 หรือ 3 และ ใส่รหัสผ่านของคุณแทนที่ yourpassword
หลังจากนี้ให้ restart mysql ใหม่ เพื่อให้การเปลี่ยนแปลงมีผล และทำให้การ login ทุกครั้งต้องผ่านหน้า login ก่อนเสมอ