ฉันติดตั้งเซิร์ฟเวอร์ MySQL บนเครื่อง Ubuntu ระยะไกลแล้ว rootผู้ใช้จะถูกกำหนดไว้ในmysql.userตารางด้วยวิธีนี้:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| localhost        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1              | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+ฉันสามารถเข้าถึงกับผู้ใช้rootจากอินเทอร์เฟซบรรทัดคำสั่งเครื่องระยะไกลเดียวกันโดยใช้mysqlไคลเอนต์มาตรฐาน ตอนนี้ฉันต้องการอนุญาตการเข้าถึงรูทจากทุกโฮสต์บนอินเทอร์เน็ตดังนั้นฉันจึงลองเพิ่มแถวต่อไปนี้ (ซึ่งเป็นสำเนาที่แน่นอนของแถวแรกจากการถ่ายโอนข้อมูลก่อนหน้านี้ยกเว้นhostคอลัมน์):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| %                | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+แต่ลูกค้าของฉันบนพีซีส่วนตัวของฉันยังคงบอกฉัน (ฉันบดบัง IP ของเซิร์ฟเวอร์):
ข้อผิดพลาดของ SQL (2003): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ใน '46 .xxx '(10061)
ฉันไม่สามารถบอกได้ว่าเป็นข้อผิดพลาดการรับรองความถูกต้องหรือข้อผิดพลาดเครือข่าย บนไฟร์วอลล์ของเซิร์ฟเวอร์ฉันเปิดใช้งานพอร์ต3306 / TCPเป็น0.0.0.0/0และนั่นก็ใช้ได้สำหรับฉัน ...
bind-addressใน my.cnf