Trong một số trường hợp khi chạy MySQL trên Amazon RDS (hoặc nơi khác), có thể cần phải FLUSH
tất cả host
bản ghi từ MySQL. Thông thường, điều này là bắt buộc khi lỗi "Host 'host_name' is blocked"
xảy ra, điều này sẽ ngăn các kết nối bổ sung từ host_name
cụ thể đó .
host_name blocked
lỗi xảy ra khi số lượng max_connect_errors
được chỉ định trong cấu hình của MySQL bị vượt quá, có nghĩa là một máy chủ cụ thể đã cố gắng kết nối quá nhiều lần không thành công. Đây là một biện pháp bảo mật được MySQL áp dụng để ngăn chặn các cuộc tấn công không chính đáng từ máy chủ / người dùng không có thông tin đăng nhập phù hợp, nhưng đôi khi nó có thể xảy ra do nhầm lẫn và có thể cần được giải quyết bằng cách xóa máy chủ.
Máy chủ xả nước làm gì?
Với người dùng MySQL có đặc quyền thích hợp, thực thi FLUSH
tuyên bố, MySQL có thể xóa các bảng, khóa và hệ thống bộ đệm ẩn nội bộ tùy thuộc vào tùy chọn options
được chuyển vào . Trong trường hợp của FLUSH HOSTS;
, MySQL sẽ làm trống bộ nhớ cache của máy chủ lưu trữ, điều này có nghĩa là bản ghi của MySQL về các máy chủ hiện đang hoặc đã kết nối gần đây được đặt lại, cho phép các kết nối tiếp theo từ các máy chủ đó.
Thực thi FLUSH HOST Trực tiếp
Mặc dù có thể bạn hoàn toàn bị ngăn kết nối với MySQL, nhưng trong một số trường hợp, có thể hệ thống sẽ “lưu” một khe kết nối chỉ khả dụng cho root
chính hoặc tài khoản.
Đối với Amazon RDS
, tên người dùng này thường được tìm thấy trong bảng điều khiển quản lý của bạn dưới dạng mặc định hoặc "Chính". Cố gắng kết nối với máy chủ MySQL của bạn bằng tên người dùng chính này.
Nếu bạn có thể kết nối, việc xóa các máy chủ của bạn cũng đơn giản như chạy FLUSH HOSTS;
Câu lệnh MySQL:
FLUSH HOSTS;
Bây giờ bạn đã xóa host_name blocked
của mình lỗi và có thể kết nối với tài khoản MySQL chuẩn của bạn.
Đẩy máy chủ từ xa bằng MySQLAdmin
Trong trường hợp bạn không thể kết nối với MySQL làm tài khoản chính và vẫn nhận được blocked
lỗi, tùy chọn tiếp theo là kết nối với máy chủ từ xa và thực thi flush
sử dụng lệnh mysqladmin
công cụ.
Để làm điều này, bạn cần phải kết nối với một người khác Phiên bản hoặc máy chủ EC2 có quyền truy cập vào máy chủ RDS gây ra lỗi.
Sau khi kết nối, hãy thực hiện lệnh sau với các tùy chọn thích hợp được thay thế giữa <>
:
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Nếu thành công, flush-hosts
lệnh sẽ được thực thi như mong đợi và bây giờ bạn có thể kết nối với MySQL như bình thường.
Khởi động lại Phiên bản RDS
Tùy chọn cuối cùng, nếu vẫn không thành công, chỉ cần đăng nhập vào bảng điều khiển quản lý RDS và khởi động lại phiên bản RDS đang mắc lỗi theo cách thủ công. Điều này sẽ đặt lại hiệu quả hosts cache
đối với bạn, mặc dù nó có thể không lý tưởng trong hoàn cảnh sản xuất.