ทำให้ MySQL ใช้พอร์ต TCP ที่ส่งต่อ
หลีกเลี่ยงการเลือก Unix socket ภายในเครื่องเมื่อไคลเอนต์ MySQL ควรเชื่อมต่อผ่านการส่งต่อ SSH TCP
การส่งต่อ SSH รับฟังบนพอร์ตภายในเครื่อง 13306 แต่ mysql ยังคงเชื่อมต่อกับฐานข้อมูลภายในเครื่อง—หรือรายงานว่า Unix socket ภายในเครื่องหายไป บน Unix ไคลเอนต์ MySQL ที่ได้รับ localhost อาจเลือก Unix socket แทน TCP การระบุพอร์ตไม่จำเป็นต้องเปลี่ยนตัวเลือกนั้น
สำหรับการส่งต่อ TCP ที่ได้รับอนุมัติอยู่แล้ว ให้ระบุโปรโตคอลอย่างชัดเจน:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
ชื่อผู้ใช้เป็นเพียงตัวอย่าง; ตัวเลือกพาสเวิร์ดขอให้ป้อนแบบโต้ตอบ คำสั่งเชื่อมต่อกับตัวรับฟัง TCP ภายในเครื่องแทน Unix socket
แยกการเข้าสู่ระบบทั้งสองออกจากกัน
เส้นทาง SSH แบบคงที่สามารถมีรูปแบบนี้ได้:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
เซิร์ฟเวอร์ SSH ของเกตเวย์เข้าถึง db.internal:3306 จากนั้น MySQL จะตรวจสอบสิทธิ์บัญชีฐานข้อมูลผ่านสตรีมไบต์นั้น คีย์ SSH ที่ได้รับการยอมรับไม่ได้ให้สิทธิ์เข้าสู่ฐานข้อมูล และข้อจำกัดแหล่งที่มาของฐานข้อมูลจะเห็นการเชื่อมต่อมาจากด้านนั้นของเส้นทาง
นี่คืออะแดปเตอร์ TCP แบบคงที่ ไม่ใช่การตั้งค่า SOCKS ที่ mysql ใช้ แอปพลิเคชันไม่ต้องการการเจรจา SOCKS เพราะปลายทางการส่งต่อมีเป้าหมายเดียวที่กำหนดไว้ล่วงหน้า
รักษาตัวตน TLS ของฐานข้อมูลที่ตั้งใจไว้และนโยบายใบรับรองในที่ที่ใช้งาน การเชื่อมต่อ socket กับ loopback ไม่ทำให้ใบรับรองฐานข้อมูลใช้ได้กับชื่อบริการอื่น การเชื่อมต่อ TCP ภายในเครื่องที่สำเร็จตัดสินใจเรื่องการเลือกการขนส่ง ไม่ใช่การตรวจสอบสิทธิ์ฐานข้อมูลหรือการตรวจสอบ TLS ในภายหลัง