Tại sao cổng chuyển tiếp của tôi với mysql không hoạt động trên máy chủ của tôi?


1

Tôi có một máy chủ mysql chạy trên một số máy chủ trong mạng của chúng tôi. Bây giờ, chỉ các kết nối từ localhost được máy chủ chấp nhận và tôi không thể kết nối với nó từ xa. Bây giờ, tôi muốn thiết lập chuyển tiếp cổng, sử dụng ssh để có thể sử dụng một số công cụ GUI với máy chủ này. Tuy nhiên, bằng cách nào đó tôi không thể được xác thực, khi tôi kết nối qua đường hầm! Nó như thế này:

Trên máy từ xa:

mysql -u exporter --password=test -h localhost -P 3306 mydatabase

Tất cả mọi thứ hoạt động hoàn hảo và tôi nhận được một vỏ mysql được kết nối.

Bây giờ, trên máy cục bộ của tôi, để thiết lập chuyển tiếp cổng:

ssh remotemachine -L127.0.0.1:33066:127.0.0.1:3306

Để kết nối với máy chủ mysql từ xa, sử dụng đường hầm này, trên máy cục bộ tôi làm:

mysql -u exporter --password=test -h localhost -P 33066 mydatabase

Đây là lỗi tôi nhận được:

ERROR 1045 (28000): Access denied for user 'exporter'@'localhost' (using password: YES)

Làm thế nào là thậm chí có thể và tôi có thể làm gì về nó? Lưu ý: vấn đề hoàn toàn có thể tái tạo với một máy chủ mysql khác trên một máy từ xa khác.


Bạn đã kiểm tra nhật ký MySQL để xem họ có cung cấp thêm thông tin hữu ích nào không?
heavyyd

Hoàn toàn không có gì trong nhật ký về kết nối này, điều này cũng hơi kỳ quặc. Ít nhất tôi không thể tìm thấy bất kỳ trong /var/log/mysql/whthing.log. Có thể máy chủ được cấu hình theo cách này, tôi không biết.
maksymko

Điều gì sẽ xảy ra nếu bạn xóa mật khẩu nhúng ( test), vì vậy hãy khiến MySQL nhắc bạn về nó? Sau đó, có lẽ bạn có thể thấy nếu MySQL chấp nhận kết nối để bắt đầu. (Vì MySQL cho phép các tài khoản không cần mật khẩu, tôi giả sử rằng bất kỳ lời nhắc nào về thông tin đăng nhập thực sự được khởi tạo bởi máy chủ.)
Arjan

Câu trả lời:


3

Bạn đã thử sử dụng

ssh -L 33066:localhost:3306 remotemachine

?

Vui lòng đảm bảo rằng bên trong hệ thống đặc quyền mysql, cả 127.0.0.1 và localhost đều là các nguồn được phép cho người dùng cơ sở dữ liệu của bạn.


Hmmm, SQLSTATE 28000 là "Đặc tả ủy quyền không hợp lệ", vì vậy tôi đoán kết nối vẫn ổn. Tuy nhiên, có lẽ "Truy cập bị từ chối" thực sự cũng có thể cho thấy nó chỉ đơn giản là không thể kết nối. Để gỡ lỗi, người ta cũng có thể so sánh ssh -L 127.0.0.1:33066:www.google.com:80 remotemachineđể ssh -L 33066:www.google.com:80 remotemachinerồi nhìn thấy nơi http://localhost:33066mất một.
Arjan

Có, loại bỏ 127.0.0.1 khỏi đặc tả đường hầm là không tốt. Kết quả là như nhau.
maksymko

@Arjan van Bentem: chuyển tiếp cổng tới google hoạt động như mong đợi ... Bạn có biết, ít nhất tôi có thể tìm thêm chi tiết về lỗi này không? Nỗ lực kết nối thất bại này phải được ghi lại ở đâu đó, phải không?
maksymko

2
Bạn có phải là người dùng mysql cục bộ được phép kết nối từ 127.0.0.1 và localhost bên trong hệ thống đặc quyền mysql (có thể đó chỉ là vấn đề về tên và IP)?
Dominik

@Dominik OH THIÊN CHÚA !!! Nó đã làm việc!!! Thật không thể tin được, thậm chí không bao giờ nghĩ về điều đó, cảm ơn bạn! Tôi chấp nhận câu trả lời của bạn, nhưng vui lòng chỉnh sửa nó để đưa vào giải pháp này.
maksymko

1

Hôm nay tôi đã cố gắng làm điều tương tự và phát hiện ra rằng khi bạn kết nối với localhost / 127.0.0.1, máy khách tự động cố gắng kết nối với quy trình thông qua một ổ cắm cục bộ thay vì kết nối tcp / ip thông thường, sẽ tránh được đường hầm ssh.

Thay vào đó, bạn phải sử dụng địa chỉ mạng cục bộ của mình (ví dụ: 192.168.0.35) thay vì địa chỉ thiết bị loopback (127.0.0.1).

Bạn cũng sẽ cần thêm tham số -g vào dòng lệnh ssh của mình để chuyển tiếp cổng đó qua địa chỉ thiết bị không vòng lặp 192.168.0.35:3306, nếu không, nó sẽ chỉ khả dụng qua 127.0.0.1:3306


0

Bài đăng chéo của câu trả lời này

Tôi đã có một vấn đề tương tự, và theo câu trả lời StackOverflow này , giải pháp đã loại bỏ người dùng 'bất kỳ'.

Có vẻ như MySQL thấy sự khác biệt giữa người dùng kết nối qua localhost và 127.0.0.1, đây là một phần của vấn đề nếu tôi hiểu đúng.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.