Lý do của Host 'host_name' bị chặn trong MySQL là gì?


12

Khi tôi sử dụng mật khẩu không chính xác để kết nối với máy chủ mysql và số lần kiểm tra đã hết max_connect_errors, và tôi thấy Aborted_connectsnó cũng phát sinh khi số lượng tôi kiểm tra, nhưng máy chủ vẫn không bị chặn.

Vì vậy, Aborted_connectstrên max_connect_errorshost_name bị chặn?

Câu trả lời:


8

Tại thời điểm này, bạn có thể cần phải chạy FLUSH HOSTS và xem nếu điều này không khóa.

Tài liệu MySQL nói điều này về FLUSH HOSTS:

  • Làm trống các bảng bộ đệm máy chủ. Bạn nên xóa các bảng máy chủ nếu một số máy chủ của bạn thay đổi địa chỉ IP hoặc nếu bạn nhận được thông báo lỗi Máy chủ 'host_name' bị chặn. Khi có nhiều lỗi max_connect_errors xảy ra liên tiếp cho một máy chủ nhất định trong khi kết nối với máy chủ MySQL, MySQL giả định rằng có gì đó không đúng và chặn máy chủ khỏi các yêu cầu kết nối tiếp theo. Việc xóa các bảng máy chủ cho phép các nỗ lực kết nối tiếp theo từ máy chủ. Xem Phần C.5.2.6, Host Host 'host_name' bị chặn. Bạn có thể bắt đầu mysqld với --max_connect_errors = 999999999 để tránh thông báo lỗi này.

Tại sao một máy chủ nên bị chặn để bắt đầu với ??

Theo Tài liệu MySQL :

Nếu bạn gặp phải lỗi sau, điều đó có nghĩa là mysqld đã nhận được nhiều yêu cầu kết nối từ máy chủ 'host_name' đã bị gián đoạn ở giữa: Máy chủ 'host_name' bị chặn do nhiều lỗi kết nối. Bỏ chặn với 'mysqladmin flush-hosts' Số lượng yêu cầu kết nối bị gián đoạn được phép được xác định bởi giá trị của biến hệ thống max_connect_errors. Sau khi max_connect_errors yêu cầu không thành công, mysqld giả định rằng có điều gì đó không ổn (ví dụ: ai đó đang cố xâm nhập) và chặn máy chủ khỏi các kết nối tiếp theo cho đến khi bạn thực hiện lệnh mysqladmin flush-hosts hoặc đưa ra câu lệnh FLUSH HOSTS. Xem Phần 5.1.3, Hệ thống máy chủ của Biến Biến.

Theo mặc định, mysqld chặn máy chủ sau 10 lỗi kết nối. Bạn có thể điều chỉnh giá trị bằng cách khởi động máy chủ như thế này:

shell> mysqld_safe --max_connect_errors=10000 &

Nếu bạn nhận được thông báo lỗi này cho một máy chủ nhất định, trước tiên bạn nên xác minh rằng không có gì sai với kết nối TCP / IP từ máy chủ đó. Nếu bạn đang gặp vấn đề về mạng, việc tăng giá trị của biến max_connect_errors là không tốt.


Dường như những lỗi này không được chuyển đến nhật ký lỗi MySQL bình thường. Có cách nào để xem nhật ký lỗi kết nối chặn máy chủ không? Ngoài ra tôi lưu ý "liên tiếp" ở trên. Vì vậy, chỉ cần một kết nối thành công ở giữa? Hoặc, tôi chỉ nên hỏi một câu hỏi mới?
Marc L.

1

Một nguyên nhân của sự tắc nghẽn như vậy là khi một số người ngẫu nhiên trên máy chủ quyết định thực hiện một số giám sát về MySQL và thiết lập một telnet đến cổng MySQL trên máy chủ từ xa. Với một số lượng yêu cầu telnet đủ, máy chủ sau đó bị chặn truy cập thêm vào máy chủ MySQL đó. Không giống như một số máy chủ, MySQL không tự động bỏ chặn quyền truy cập sau một khoảng thời gian hợp lý: quản trị viên máy chủ phải gõ MySQL lên đầu.

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.