วิธีติดตั้ง MySQL Server และ phpMyAdmin บน docker Step by step
1. ต้องทำการติดตั้ง docker ในเครื่องเราเสียก่อน
สามารถดูวิธีการติดตั้งได้จากลิ้งนี้ครับ https://docs.docker.com/docker-for-mac
2. เปิด terminal ขึ้นมาทำการ pull image mysql และ phpmyadmin ลงมาก่อน คำสั่งตามด้านล่างนี้ครับ
คำสั่ง pull image mysql
docker pull mysql
คำสั่ง pull image phpmyadmin
docker pull phpmyadmin/phpmyadmin
3. ทำการติดตั้ง mysql server
docker run --name=keeplearning -e MYSQL_ROOT_PASSWORD=keep1234 -e MYSQL_DATABASE=keeplearning -p 3306:3306 -d mysql
คำสั่งดังกล่าวเป็นการไปสร้าง container ที่ชื่อว่า keeplearning กำหนดค่า environment 2 ค่าคือ password ของ user root และ database name และ expose ด้วย port 3306 จาก image mysql
สามารถดู configuration ของ container mysql ได้ด้วยคำสั่ง (Optional)
docker inspect keeplearning
4. shell to mysql container เพื่อจะเข้าไปทดสอบใช้งาน mysql ที่เราเพิ่งลงไว้
docker exec -it 507a5d22d8c2 bash
mysql -u root -p
5. ลองดู database name ที่เราสร้าง
show databases;
จบขั้นตอนการติดตั้ง mysql server บน docker แล้วครับ
คำสั่งออกจาก mysql: quit;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
6. ขั้นตอนต่อไปเรามาติดตั้ง phpmyadmin กันต่อครับ
docker run --name myadmin -d --link keeplearning:db -p 8081:80 phpmyadmin/phpmyadmin
จากคำสั่งดังกล่าวเป็นการ create container สำหรับรัน image phpmyadmin ด้วย port 8081 โดยลิ้ง database ไปกับ container mysql ที่เราเพิ่งสร้างไป
7. ตรวจสอบสถานะ container อีกครั้ง
8. ลองเข้า phpmyadmin ด้วย url http://localhost:8081
ลอง login ด้วย user: root และ password ตามที่เรากำหนดไว้ตั้งแต่ขั้นตอนแรกๆ
9. หากขึ้น error ดังภาพด้านล่าง ให้ทำตามขั้นตอนดังนี้
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'keep1234';
10. จากนั้นลอง login อีกครั้ง
สำเร็จแล้ว
จบแล้วครับสำหรับขั้นตอนการติดตั้ง mysql server พร้อม phpmyadmin ใช้เป็น client คงจะเป็นประโยชน์กับผู้ที่ผ่านมาเจอนะครับ จริงๆผมติดปัญหาอยู่นาน แต่หลายที่ไม่เห็นเขาติดปัญหาแบบเครื่องเรา เลยลองทำหลายๆรอบจนได้วิธีที่ทำกี่ครั้งก็ต้องสำเร็จ และอยากแบ่งปันท่านอื่นด้วย สามารถให้แนะนำ ติชม เข้ามาได้นะครับ
ขอบคุณครับ