ฉันได้ต่อสู้กับข้อผิดพลาดนี้ในวันนี้ใน OSX Yosemite กับ MySQL 5.7 ที่เพิ่งปรับปรุงด้วย Homebrew ทำตามคำแนะนำใน StackOverflow และที่อื่น ๆ ผมล่ารอบหลังจากไฟล์ทั้งหมดที่ระบุไว้my.cnf
bind-address=0.0.0.0
ฉันก็ถอดและติดตั้ง MySQL ทำตามคำแนะนำเหล่านี้brew install mysql
แล้วติดตั้งใหม่โดยใช้ ยังไม่อนุญาตการเชื่อมต่อระยะไกล
มันไม่ได้จนกว่าฉันวิ่งps -ax | grep mysql
และพบว่าที่อยู่ผูกที่ถูกส่งผ่านไปในคำสั่งการเปิดตัว (จึงเอาชนะใด ๆmy.cnf
ไฟล์) ที่ฉันขุดบางมากขึ้นและพบว่า Homebrew ผูก MySQL เพื่อ 127.0.0.1 โดยค่าเริ่มต้น
การแก้ไข~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
เปลี่ยนแปลง--bind-address=127.0.0.1
เพื่อ--bind-address=0.0.0.0
แก้ไขปัญหาของฉัน (อันหลังควรเปลี่ยนเป็นที่อยู่ IP เฉพาะหากนี่ไม่ใช่แค่เครื่องพัฒนา)
ฉันรู้สึกว่านี่เป็นข้อมูลที่ขาดหายไปจากแหล่งข้อมูลส่วนใหญ่ที่ฉันปรึกษาดังนั้นหวังว่าการโพสต์สิ่งนี้จะช่วยคนอื่นได้!
แก้ไข:ตามที่LeandroCRระบุไว้ในความคิดเห็นการทำงานbrew services restart mysql
จะเขียนทับไฟล์ plist ใน LaunchAgents ด้วยค่าเริ่มต้นซึ่งนำไปสู่ MySQL ปฏิเสธการเชื่อมต่ออย่างลึกลับอีกครั้ง ดังนั้นคำแนะนำที่ดีกว่าสิ่งที่ฉันเขียนตอนแรกมีดังต่อไปนี้:
- แก้ไข
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
และแทนที่--bind-address=127.0.0.1
ด้วยbind-address=*
หรือ--bind-address=0.0.0.0
( ดูเอกสารประกอบ MySQL ในที่อยู่ผูก )
- รีสตาร์ท mysql โดยใช้
brew services restart mysql
จากนั้น MySQL ควรยอมรับการเชื่อมต่อที่ไม่ใช่แบบท้องถิ่นต่อไปจนกว่าคุณจะติดตั้งใหม่
แก้ไข (ก.ย. 2019)
Timothy Zornชี้ให้เห็นว่าปัญหานี้ไม่ได้เกิดขึ้นกับ MySQL 8.x ที่ติดตั้งและเรียกใช้ผ่าน Homebrew ดังนั้นคำตอบของฉันข้างต้นที่เขียนในปี 2559 อาจเกี่ยวข้องกับ 5.x เท่านั้น
ssh
เปิดในแท็บเดียว แต่ไม่เช่นนั้น ฉันคิดว่าปัญหาคือกระบวนการเซิร์ฟเวอร์ฐานข้อมูลหยุดชั่วคราวหรือไม่ทำงานเมื่อฉันไม่ได้ลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกล