Khiến MySQL dùng cổng TCP được chuyển tiếp
Tránh chọn socket Unix cục bộ khi ứng dụng khách MySQL phải kết nối qua chuyển tiếp SSH TCP.
Chuyển tiếp SSH lắng nghe trên cổng cục bộ 13306, nhưng mysql vẫn kết nối tới cơ sở dữ liệu cục bộ—hoặc báo rằng socket cục bộ của nó bị thiếu. Trên Unix, ứng dụng khách MySQL khi được cung cấp localhost có thể chọn socket Unix thay vì TCP. Việc cung cấp cổng không nhất thiết thay đổi lựa chọn đó.
Với một chuyển tiếp TCP đã được phê duyệt, hãy làm rõ giao thức:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Tên người dùng chỉ là ví dụ; tùy chọn mật khẩu yêu cầu nhập tương tác. Lệnh kết nối tới trình lắng nghe TCP cục bộ thay vì socket Unix.
Giữ hai lần đăng nhập tách biệt
Một tuyến SSH cố định có thể có dạng này:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Máy chủ SSH của cổng kết nối tới db.internal:3306. Sau đó MySQL xác thực tài khoản cơ sở dữ liệu qua luồng byte đó. Khóa SSH được chấp nhận không cấp đăng nhập cơ sở dữ liệu, và các hạn chế nguồn của cơ sở dữ liệu thấy kết nối đến từ phía đó của tuyến.
Đây là bộ chuyển đổi TCP cố định, không phải cài đặt SOCKS mà mysql sử dụng. Ứng dụng không cần thương lượng SOCKS vì điểm cuối chuyển tiếp có một mục tiêu đã được xác định trước.
Giữ nguyên danh tính TLS dự định của cơ sở dữ liệu và chính sách chứng chỉ ở nơi chúng được dùng. Kết nối socket với loopback không làm chứng chỉ cơ sở dữ liệu trở nên hợp lệ cho một tên dịch vụ khác. Một kết nối TCP cục bộ thành công quyết định lựa chọn vận chuyển, không phải việc xác thực cơ sở dữ liệu hay kiểm tra TLS sau đó.