ในการเปิดเผย MySQL กับสิ่งอื่นนอกเหนือจาก localhost คุณจะต้องมีบรรทัดต่อไปนี้
สำหรับ mysql เวอร์ชัน 5.6 และต่ำกว่า
ไม่ใส่ความคิดเห็น/etc/mysql/my.cnf
และกำหนดให้กับที่อยู่ IP คอมพิวเตอร์ของคุณและไม่ย้อนกลับ
สำหรับ mysql เวอร์ชัน 5.7 ขึ้นไป
ไม่ใส่ความคิดเห็น/etc/mysql/mysql.conf.d/mysqld.cnf
และกำหนดให้กับที่อยู่ IP คอมพิวเตอร์ของคุณและไม่ย้อนกลับ
bind-address = xxx.xxx.xxx.xxx
หรือเพิ่มไฟล์
bind-address = 0.0.0.0
ถ้าคุณไม่ต้องการระบุ IP
จากนั้นหยุดและรีสตาร์ท MySQL ด้วยรายการ my.cnf ใหม่ เมื่อวิ่งไปที่เทอร์มินัลแล้วป้อนคำสั่งต่อไปนี้
lsof -i -P | grep :3306
นั่นควรจะกลับมาเป็นแบบนี้พร้อมกับ IP จริงของคุณใน xxx
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
หากข้อความข้างต้นส่งคืนอย่างถูกต้องคุณจะสามารถยอมรับผู้ใช้ระยะไกลได้ อย่างไรก็ตามสำหรับผู้ใช้ระยะไกลในการเชื่อมต่อกับ Priveleges ที่ถูกต้องคุณจะต้องให้ผู้ใช้นั้นสร้างขึ้นทั้งใน localhost และ '%' เช่นเดียวกับใน.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
จากนั้น
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
และในที่สุดก็,
FLUSH PRIVILEGES;
EXIT;
หากคุณไม่มีผู้ใช้คนเดียวกันที่สร้างไว้ข้างต้นเมื่อคุณเข้าสู่ระบบภายในคุณอาจสืบทอดสิทธิ์ localhost พื้นฐานและมีปัญหาในการเข้าถึง หากคุณต้องการ จำกัด การเข้าถึง myuser คุณจะต้องอ่านไวยากรณ์คำสั่ง GRANT ที่นี่หากคุณทำสิ่งเหล่านี้ได้ทั้งหมดและยังคงมีปัญหาให้โพสต์ผลลัพธ์ข้อผิดพลาดเพิ่มเติมและบรรทัดที่เหมาะสม my.cnf
หมายเหตุ: หาก lsof ไม่ส่งคืนหรือไม่พบคุณสามารถติดตั้งได้ที่นี่ตามการกระจาย Linux ของคุณ คุณไม่จำเป็นต้องใช้ lsof ในการทำให้สิ่งต่างๆทำงานได้ แต่จะมีประโยชน์อย่างยิ่งเมื่อสิ่งต่างๆไม่เป็นไปตามที่คาดไว้