สร้าง phpmyadmin ไว้ connect mysql server เครื่องไหนก็ได้
เคยไม๊ที่จะต้องไปลง web server ลง php ลง phpmyadmin ที่เครื่องที่เป็น mysql server ทุกเครื่อง
ข้อเสียที่พบก็คือใช้เวลาในการติดตั้งเพิ่มขึ้น ทั้งต้องมาคอยปิดช่องโหว่ของ software อื่น ๆ เช่น web server version, php version ทั้ง ๆ ที่เครื่องทำหน้าที่เพียงแค่เป็น database server เท่านั้น
วันนี้มาลองวิธีนี้กันดีกว่า โดยทำเครื่องที่ทำหน้าที่เป็นเพียงแค่ phpmyadmin เพียงอย่างเดียว แล้วให้ไป connect กับ mysql server เครื่องไหนก็ได้ เวลาจะจัดการอะไรกับ mysql server เครื่องไหนก็แค่กำหนดให้ phpmyadmin ทำการ connect ไปที่ mysql server เครื่องนั้น แล้วเราก็เข้าไปใช้งานที่เครื่อง phpmyadmin เครื่องนี้เพียงเครื่องเดียว
สิ่งที่ต้องทำอย่างแรกคือตรวจสอบก่อนว่า mysql server เครื่องที่ต้องการ สามารถ remote เข้าไปได้หรือไม่ โดย
- ตรวจ service port โดยใช้คำสั่ง “netstat -anlt” จะต้องไม่พบว่า service port ของ mysql เกาะอยู่กับหมายเลข ip “127.0.0.1” เพราะจะหมายความว่าเครื่องนี้กำหนดให้ใช้งานแบบ local อย่างเดียว หากต้องการให้สามารถใช้งานจากเครื่องอื่นได้ด้วย ให้ไปทำการ comment บรรทัด “bind-address = 127.0.0.1” ที่ file “/etc/mysql/mysql.conf.d/mysqld.cnf” ให้เป็น “#bind-address = 127.0.0.1” แล้วทำการ restart service ของ mysql ใหม่
- ตรวจสอบว่าสามารถ remote connect ไปใช้งานได้หรือไม่ ยกตัวอย่างโดยการ remote connect จากเครื่อง client เข้าไปโดยการคำสั่ง “/usr/mysql/bin/mysql -u <user> -p -h <db server>” ถ้า remote connect ไม่ได้ส่วนใหญ่จะเป็นเพราะไม่อนุญาตให้เข้าถึงได้จาก remote host ให้ทำการแก้ไขดังนี้
ไปที่เครื่อง mysql server แล้ว log in เข้าไปใช้งาน mysql ด้วย user “root”
/usr/bin/mysql -u root -p
แล้วใส่ password ของ user “root”
เสร็จแล้วให้ update host ด้วยคำสั่ง
UPDATE mysql.user SET HOST='%' WHERE User='<user>';
ในที่นี้ใช้ user "root" จึงใช้คำสั่งดังนี้
UPDATE mysql.user SET HOST='%' WHERE User='root';
เสร็จแล้วให้ทำการ flush privileges ด้วยคำสั่ง
FLUSH PRIVILEGES;
หลังจากขั้นตอนนี้แล้วควรจะสามารถ remote เข้าเครื่อง mysql server ได้แล้ว ก็เป็นอันจบการเตรียมการขั้นต้น
ต่อจากนั้นเรามาเตรียมเครื่องที่จะทำหน้าที่เป็น phpmyadmin กัน
เครื่องที่เราจะนำมาทำในที่นี้เราเลือกเครื่องเป็น linux โดยเลือกใช้เป็น ubuntu 16.04 LTS
เสร็จแล้วให้ทำการติดตั้ง docker ลงไป 😃
curl -fsSL get.docker.com -o get-docker.shsh get-docker.sh
พระเอกของเราคือตัวนี้แหละครับ หลังจากติดตั้ง docker เสร็จแล้วให้ run คำสั่งนี้ได้เลย
docker run --name myadmin -d -e PMA_HOST=<mysql server> -e PMA_ROOT_PASSWORD=password -p 8080:80 phpmyadmin/phpmyadmin
โดย “mysql server” คือหมายเลข ip ของเครื่องที่เป็น mysql server
password ของ user “root” ในคำสั่งนี้คือ password คือ “password”
บรรทัด “-p 8080:80” หมายถึงเราจะใช้งาน phpmyadmin ที่ port หมายเลข 8080
เสร็จแล้วเครื่อง phpmyadmin เราก็พร้อมที่จะใช้งานแล้ว
ให้เปิด internet browser แล้วใส่ ip ของเครื่อง phpmyadmin ของเราเข้าไปแล้วตามด้วย port หมายเลข 8080
เสร็จแล้วก็ใส่ username/password ของเครื่อง mysql server เข้าไป
เรียบร้อย 😄
*** เราสามารถ connect ได้มากกว่า 1 server ก็ได้โดยการแยก service port ออกจากกันนะครับ โดยการแก้ไขชื่อของ container, ip ของ mysql server และเลข port ที่ให้บริการ