เป็นเวลาหลายเดือนที่ฉันเชื่อมต่อกับอินสแตนซ์ MySQL ที่ทำงานบนเซิร์ฟเวอร์ทดสอบในพื้นที่ของเราผ่านอุโมงค์ SSH โดยไม่มีปัญหาใด ๆ อย่างไรก็ตามในทันทีโดยที่ไม่มีการเปลี่ยนแปลงใด ๆ ที่ฉันคิดได้เซิร์ฟเวอร์ก็เริ่มปฏิเสธการพยายามเข้าสู่ระบบจาก Sequel Pro ด้วยข้อผิดพลาด:
ไม่สามารถเชื่อมต่อกับโฮสต์ 127.0.0.1 เนื่องจากการเข้าถึงถูกปฏิเสธ
ตรวจสอบชื่อผู้ใช้และรหัสผ่านอีกครั้งและตรวจสอบให้แน่ใจว่าอนุญาตการเข้าถึงจากตำแหน่งปัจจุบันของคุณ
MySQL กล่าวว่าการเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'รูท' @ 'localhost' (ใช้รหัสผ่าน: ใช่)
ฉันสามารถเข้าสู่ระบบจากเทอร์มินัลเมื่อเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ผ่าน SSH ไม่ใช่ผ่านอุโมงค์ SSH ปัญหาไม่ได้เฉพาะกับ Sequel Pro หรือตัวฉันเองฉันได้รับข้อผิดพลาดเดียวกันเมื่อเชื่อมต่อผ่าน MySQL Workbench เช่นเดียวกับคนอื่น ๆ ในสำนักงาน ฉันได้รีเซ็ตรหัสผ่านด้วยmysqladmin
เหตุผลเพื่อความมีเหตุผลนั่นไม่ใช่ปัญหาแน่นอน
เมื่อฉันเริ่มดูมันมากขึ้นฉันสังเกตเห็นว่าข้อผิดพลาดได้รายงานว่าเซิร์ฟเวอร์เป็น "localhost" แทนที่จะเป็น "127.0.0.1" ซึ่งฉันป้อนใน Sequel Pro เพื่อนแนะนำว่านั่นอาจเป็นเพียงการจัดการข้อผิดพลาดที่ไม่ดี แต่ดูเหมือนว่าแปลกที่ให้ความแตกต่างอย่างมีนัยสำคัญระหว่าง localhost และ 127.0.0.1 ใน MySQL
ในความพยายามที่จะแก้ไขปัญหาอุโมงค์ฉันได้รับสิทธิ์เข้าถึง root @% เพื่อให้ฉันสามารถเชื่อมต่อได้โดยตรง ส่วนใหญ่ใช้งานได้ฉันสามารถดูข้อมูลตารางสร้างฐานข้อมูลใหม่ ฯลฯ ปัญหาเดียวคือเมื่อฉันมาเพื่อสร้างผู้ใช้ที่ฉันได้รับข้อผิดพลาด:
ปฏิเสธการเข้าถึงสำหรับผู้ใช้ 'root' @ '%' (ใช้รหัสผ่าน: YES)
ผู้ใช้ถูกสร้างขึ้นอย่างแปลกจริงฉันคิดว่ามันเป็นปัญหาของการอนุญาต อีกครั้งแม้ว่าจาก terminal ฉันสามารถทำอะไรเมื่อเข้าสู่ระบบในฐานะ root
ใครสามารถช่วยอธิบายเกี่ยวกับสาเหตุที่การเชื่อมต่อทันเนลและ (อาจ) คำสั่งให้ได้รับข้อผิดพลาดถูกปฏิเสธการเข้าถึง?
สำหรับการอ้างอิง MySQ เป็นรุ่น 5.6.16 โดยส่วนใหญ่เป็นการตั้งค่าเริ่มต้นติดตั้งผ่าน Homebrew บนเครื่อง MAC OS X Server
ปรับปรุง
นี่คือรายการของโฮสต์ที่รูทได้รับอนุญาตให้เข้าถึงบน:
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
ตามที่ฉันเข้าใจแล้วแถวแรก ("%") ควรทำให้คนอื่นซ้ำซ้อนกันจริงหรือ
อัปเดต 2
แก้ไขปัญหาการให้สิทธิ์ ผู้ใช้ root @% ยังไม่ได้รับสิทธิ์ทั้งหมดด้วยส่วนเสริมwith grant option
ในตอนท้ายดังนั้นจึงสามารถทำทุกอย่างยกเว้นให้สิทธิ์ ยังคงอยากรู้ว่าทำไมอุโมงค์ SSH ถึงถูกปฏิเสธ