อะไรคือสาเหตุที่โฮสต์ 'host_name' ถูกบล็อกใน MySQL?


12

เมื่อฉันใช้รหัสผ่านที่ไม่ถูกต้องเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ mysql และจำนวนการทดสอบอยู่เหนือmax_connect_errorsและฉันพบว่าAborted_connectsมันจะเกิดขึ้นเช่นเดียวกับการนับฉันทดสอบ แต่โฮสต์ยังคงไม่ถูกบล็อก

เพื่อไม่Aborted_connectsมากกว่าmax_connect_errorshost_name แล้วถูกบล็อก?

คำตอบ:


8

ณ จุดนี้คุณอาจต้องเรียกใช้ฟลัชโฮลต์และดูว่าการปลดบล็อกนี้หรือไม่

เอกสาร MySQL กล่าวสิ่งนี้เกี่ยวกับโฮสต์ล้าง:

  • ล้างตารางแคชโฮสต์ คุณควรล้างข้อมูลตารางโฮสต์หากโฮสต์บางแห่งของคุณเปลี่ยนที่อยู่ IP หรือหากคุณได้รับข้อความแสดงข้อผิดพลาด Host 'host_name' ถูกบล็อก เมื่อเกินกว่าข้อผิดพลาด max_connect_errors เกิดขึ้นอย่างต่อเนื่องสำหรับโฮสต์ที่กำหนดในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์ MySQL, MySQL จะถือว่าสิ่งผิดปกติและบล็อกโฮสต์จากการร้องขอการเชื่อมต่อเพิ่มเติม การล้างตารางโฮสต์ช่วยให้สามารถทำการเชื่อมต่อเพิ่มเติมจากโฮสต์ได้ ดูส่วน C.5.2.6“ โฮสต์ 'host_name' ถูกบล็อก” คุณสามารถเริ่ม mysqld ด้วย --max_connect_errors = 999999999 เพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาดนี้

ทำไมโฮสต์ควรถูกบล็อกเพื่อเริ่มต้นด้วย?

ตามเอกสาร MySQL :

หากคุณได้รับข้อผิดพลาดต่อไปนี้หมายความว่า mysqld ได้รับการร้องขอการเชื่อมต่อจำนวนมากจากโฮสต์ 'host_name' ที่ถูกขัดจังหวะกลาง: โฮสต์ 'host_name' ถูกบล็อกเนื่องจากข้อผิดพลาดการเชื่อมต่อจำนวนมาก เลิกบล็อกด้วย 'mysqladmin flush-hosts' จำนวนการร้องขอการเชื่อมต่อที่ถูกขัดจังหวะจะถูกกำหนดโดยค่าของตัวแปรระบบ max_connect_errors หลังจากการร้องขอ max_connect_errors ล้มเหลว mysqld จะถือว่าบางสิ่งผิดปกติ (เช่นมีคนพยายามบุกรุก) และบล็อกโฮสต์จากการเชื่อมต่อเพิ่มเติมจนกว่าคุณจะรันคำสั่ง mysqladmin flush-hosts หรือออกคำสั่ง FLUSH HOSTS ดูหัวข้อ 5.1.3“ ตัวแปรระบบเซิร์ฟเวอร์”

โดยค่าเริ่มต้น mysqld บล็อกโฮสต์หลังจาก 10 ข้อผิดพลาดการเชื่อมต่อ คุณสามารถปรับค่าโดยเริ่มต้นเซิร์ฟเวอร์ดังนี้:

shell> mysqld_safe --max_connect_errors=10000 &

หากคุณได้รับข้อความแสดงข้อผิดพลาดนี้สำหรับโฮสต์ที่กำหนดคุณควรตรวจสอบก่อนว่าไม่มีอะไรผิดปกติกับการเชื่อมต่อ TCP / IP จากโฮสต์นั้น หากคุณประสบปัญหาเครือข่ายคุณไม่สามารถเพิ่มค่าของตัวแปร max_connect_errors ได้


ดูเหมือนว่าข้อผิดพลาดเหล่านี้จะไปที่บันทึกข้อผิดพลาด MySQL ปกติ มีวิธีดูบันทึกข้อผิดพลาดการเชื่อมต่อบล็อกโฮสต์หรือไม่ ฉันยังสังเกตเห็น "ต่อเนื่อง" ข้างต้น ดังนั้นเพียงแค่ต้องมีการเชื่อมต่อที่ประสบความสำเร็จในระหว่าง? หรือฉันควรถามคำถามใหม่?
Marc L.

1

สาเหตุหนึ่งที่ทำให้เกิดการอุดตันคือการที่บางคนในโฮสต์ตัดสินใจทำการตรวจสอบ MySQL และตั้งค่า telnet ไปยังพอร์ต MySQL บนเซิร์ฟเวอร์ระยะไกล ด้วยจำนวนที่เพียงพอของการร้องขอ telnet โฮสต์จะถูกบล็อกจากการเข้าถึงเซิร์ฟเวอร์ MySQL นั้นเพิ่มเติม ซึ่งแตกต่างจากเซิร์ฟเวอร์บางตัว MySQL ไม่ยกเลิกการปิดกั้นการเข้าถึงโดยอัตโนมัติหลังจากระยะเวลาที่เหมาะสม: ผู้ดูแลเซิร์ฟเวอร์ต้องเคาะ MySQL บนหัว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.