Cổng 3306 dường như bị đóng trên máy chủ Ubuntu của tôi


33

Tôi có hai máy chủ VPS và cả hai đều đã cài đặt MySQL , một để thử nghiệm và một để phát triển. Một trong những máy chủ của tôi sẽ không cho phép tôi kết nối từ bên ngoài. Với người dùng;

'mytestuser' @ '%'

Theo một công cụ tìm cổng mở , cổng 3306 cho máy chủ vi phạm dường như bị đóng. Tôi có các chương trình C ++ và Java của riêng tôi nghe trên các cổng tùy ý mà không có bất kỳ vấn đề nào. Tại sao điều này xảy ra và làm thế nào tôi có thể sửa chữa nó?

Ubuntu được cài đặt là Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Kết quả netstat -tupletrên mỗi máy chủ

Máy chủ vi phạm

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Máy chủ làm việc

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -

Câu trả lời:


76

Vấn đề là máy chủ chỉ lắng nghe nội bộ.

Loại bỏ các dòng bind-address 127.0.0.1từ /etc/mysql/my.cnfgiải quyết vấn đề.

Các phiên bản mới hơn của Ubuntu (.0416.04) có thể có dòng này /etc/mysql/mysql.conf.d/mysqld.cnf.


2
Điều này làm việc cho tôi. Lưu ý tên tệp đúng là /etc/mysql/my.cnfkhông /etc/mysql/my.conf.
Trận chiến

Tôi đã thay đổi địa chỉ liên kết của mình để khớp với địa chỉ IP bên ngoài của máy chủ và nó hoạt động với tôi.
Butussy Butkus

Xóa hoàn toàn dòng và máy chủ sẽ lắng nghe TẤT CẢ các giao diện
s1mmel

Bạn đã cứu ngày của tôi, đã cố gắng giải quyết vấn đề này trong một vài tuần, cảm ơn!
budiantoip

9

Đề nghị của tôi, nếu bạn chắc chắn rằng các cổng đã bị đóng (tôi thấy thật kỳ lạ khi VPS đóng cổng đó) là thay đổi tệp cấu hình của MySQL để sử dụng một cổng khác.

Chỉ cần mở tệp cấu hình trong thiết bị đầu cuối sudo nano /etc/mysql/mysql.confvà tìm [mysqld]phần. Trong đó, tìm dòng mà đọc port = 3306. Thay đổi nó sang một cổng khác không được sử dụng và lưu tệp.

Sau đó, chỉ cần khởi động lại VPS hoặc khởi động lại dịch vụ, như thế nào sudo service mysql restart.

Chỉ cần lưu ý rằng, nếu tệp mysql.confkhông nằm trong tệp tôi đã đề cập ở trên, nó có thể ở những nơi khác:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

Và nếu servicelệnh không hoạt động, thì hãy làm điều này:

sudo /etc/init.d/mysql restart

Nếu sự cố vẫn còn thì trong trường hợp của tôi, tôi sẽ kiểm tra iptables (tôi thực sự sẽ xóa mọi thứ trong iptables chỉ để bắt đầu làm mới nếu đây có thể là một tùy chọn) hoặc bất kỳ tùy chọn hỗ trợ tường lửa nào khác.

Vì chúng là VPS, tôi cũng sẽ kiểm tra Bảng điều khiển VPS để xem nó có tùy chọn nào có thể chặn cổng không.

Ngoài ra, tôi sẽ chạy nmaptrên VPS để xem bạn đã mở cổng nào. Bạn cần chạy nó từ bên ngoài VPS để xem họ đã mở cổng nào.

netstat -tuplen cũng là một ý tưởng tốt để xem bạn đã mở cổng nào trên máy chủ và cổng nào ở chế độ LISTEN.


Này, tôi đã thử nó trên một cổng khác và nó vẫn không hoạt động, tôi cũng đã thử 'iptables -A INPUT -i eth0 -p tcp -m tcp --dport PORT -j CHẤP NHẬN' nhưng không may mắn :( .. chỉnh sửa không phải là o eth0 .. có thể vẫn còn hy vọng.
Andy

@Andy Cập nhật câu trả lời để bao gồm một số gợi ý khác.
Luis Alvarado

Cảm ơn bạn đã gợi ý Luis tôi sẽ xem xét điều này.
Andy

Tôi đã cập nhật kết quả của netstat -tuple cho câu hỏi. Hình như có một vấn đề ở đây.
Andy

6

Tôi cố định này bằng cách thay đổi bind-address 127.0.0.1để bind-address 0.0.0.0/etc/mysql/mysql.conf.d(vì vậy mà nghe MySQL trên tất cả các cổng).

Ngoài ra, tôi thiết lập một tài khoản người dùng mysql để được sử dụng từ xa (xem https://stackoverflow.com/a/24171107/132374 ).


6

Tôi sử dụng phương pháp này:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Không cần thay đổi các tệp cấu hình khác và không có cổng bổ sung được mở theo mặc định.


sudo ufw allow 3306/tcpTôi đã cố chỉnh sửa nhưng sẽ không cho phép tôi
Adam

1

Nó có thể xảy ra rằng cấu hình của bạn nằm trong thư mục /etc/mysql/mysql.conf.d/mysqld.cnf, xác minh nếu đó không phải là trường hợp.


1
Tôi đã cố gắng tìm ra nó trong ba giờ trước khi tôi thấy điều này, cảm ơn!
Oliver Ni
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.