เชื่อมต่อฐานข้อมูล MySQL กับคอนเทนเนอร์ MySQL


9

ฉันดึงภาชนะ MySQL จากDockerhubและมันทำงานบน macbook pro ของฉันตามที่คุณเห็นดังต่อไปนี้

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
12cd3deaa3f0        mysql:latest        "/entrypoint.sh mysql"   47 hours ago        Up 10 minutes       3306/tcp            mysqldb

จากนั้นฉันดาวน์โหลด MySQL workbench และฉันพยายามเชื่อมต่อกับคอนเทนเนอร์ MySQL แต่มันไม่ทำงาน มันแสดงให้เห็นข้อผิดพลาดการเชื่อมต่อ

Your connection attempt failed for user 'root' from your host to server at 192.168.99.102:3306:
Can't connect to MySQL server on '192.168.99.102' (60)

IP จากเครื่องเทียบท่าคือ

docker-machine ip default
192.168.99.100

และพอร์ตจาก MySQL คือ 3306 ดังที่คุณเห็นด้านบน

ในการส่งออกพอร์ต MySQL ฉันลองด้วยคำสั่ง

docker run -d -P mysql:latest mysqldb

มันไม่ทำงานเลย ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


9

ดูเหมือนว่าคุณจะรันคอนเทนเนอร์โดยไม่ต้องตั้งค่า-p 3306:3306พารามิเตอร์ นอกจากนี้ดูเหมือนว่าคุณพิมพ์ที่อยู่ IP ในชื่อโฮสต์ใน MySQL Workbench ที่พิมพ์ผิด ฉันขอแนะนำให้เริ่มต้นจากศูนย์โดยทำตามคำแนะนำเหล่านี้:

  1. เรียกใช้เซิร์ฟเวอร์ mysql (เปลี่ยนรหัสผ่านadminเป็นสิ่งที่คุณต้องการ)

docker run -e MYSQL_ROOT_PASSWORD=admin --name mysql -d -p=3306:3306 mysql

  1. รับที่อยู่ IP ของเครื่องเสมือนจริงของนักเทียบท่าเริ่มต้นด้วยการเรียกใช้

docker-machine ip default

  1. คัดลอกที่อยู่ IP ที่คุณจะได้รับตามคำสั่งก่อนหน้า (ในกรณีของคุณควรเป็น 192.168.99.100)
  2. เปิด MySQL Workbench และสร้างการเชื่อมต่อใหม่ วางที่อยู่ IP ที่คุณคัดลอกลงในช่อง "ชื่อโฮสต์"

คุณควรจะพร้อมทั้งหมดในขณะนี้


1

พารามิเตอร์-Pผูกพอร์ตที่ส่งออกของคอนเทนเนอร์โดยอัตโนมัติไปยังพอร์ตที่มีอยู่ของโฮสต์

คำสั่งต่อไปนี้ควรผูกพอร์ตคอนเทนเนอร์ 3306 กับพอร์ต 3306 ของโฮสต์ โปรดดู: เผยแพร่หรือเปิดเผยพอร์ต

docker run -d -p 3306:3306 mysql:latest mysqldb

ฉันพิมพ์คำสั่งdocker run -d -p 3306:3306 mysql:5.7.9 dbmysqlและเป็นผลลัพธ์ที่ฉันได้รับd38a0f208bcda50132d7f6f679c9282b0d90b275610b8d19ac93bf82d94eea43แต่ก็ยังไม่สามารถเข้าถึงคอนเทนเนอร์ mysql ด้วย mysql workbench เมื่อฉันพิมพ์นักเทียบท่า ps มันจะแสดงให้ฉันd6b44992ec77 mysql:5.7.9 "/entrypoint.sh mysql" About a minute ago Up About a minute 3306/tcp dbmysql
zero_coding
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.