MySQL [คำเตือน] ไม่สามารถแก้ไขที่อยู่ IP ได้


27

ฉันทำงาน MySQL5.6.3 บน CentOS 6.1 เครื่องเสมือนที่ทำงานบน Windows XP ในVirtualBox

การ์ดเครือข่ายถูกกำหนดค่าในโหมดบริดจ์ดังนั้นเครื่องจริงและเสมือนของฉันจึงใช้การ์ดอีเธอร์เน็ตเดียวกัน

บนเครื่องเสมือนจริงทุกอย่างทำงานได้ดี: การเข้าถึงอินเทอร์เน็ต, การค้นหา DNS อย่างไรก็ตามการเชื่อมต่อกับ MySQL daemon ใช้เวลาสักครู่และบันทึกจะแสดงคำเตือนนี้:

[คำเตือน] ไม่สามารถแก้ไขที่อยู่ IP '192.168.1.201': การแก้ไขชื่อล้มเหลวชั่วคราว

192.168.1.201 เป็นเครื่องโฮสต์ของฉันที่ฉันใช้งานไคลเอนต์ MySQL

ดูเหมือนว่าการค้นหา DNS จะทำงานได้ดี แต่การค้นหา DNS แบบย้อนกลับก็สิ้นสุดลงด้วยการหมดเวลา

นี่คือการกำหนดค่าเครื่องเสมือน:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:4B:3D:7C"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK=255.255.255.0
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
PEERDNS=yes

# cat /etc/resolv.conf
nameserver 192.168.1.1

มีการผิดพลาดในการกำหนดค่าเครือข่ายของฉันหรือไม่?


อ้างถึงคำตอบของฉันอีกสำหรับคำถามนี้: serverfault.com/a/778161/96578
Amin Sh

คำตอบ:


49

IMHO ดูเหมือนว่าคุณต้องการ mysqld เพื่อหยุดการใช้ DNS

โปรดทำสิ่งต่อไปนี้: เพิ่มลงใน /etc/my.cnf

[mysqld]
skip-host-cache
skip-name-resolve

พวกเขาเริ่ม mysql ใหม่ จากนั้นเป็นต้นมา mysql จะไม่แก้ไขที่อยู่ผ่าน DNS อีกต่อไป

ให้มันลอง !!!

ข้อแม้

โปรดอ่านตัวเลือกเหล่านี้ในเอกสาร MySQL:

นอกจากนี้ยังมีข้อ จำกัด ในการใช้สิ่งนี้: คุณไม่สามารถใช้ชื่อ DNS ในคอลัมน์โฮสต์ของตารางการให้สิทธิ์ใด ๆ

อัพเดท 2012-12-17 08:37 EDT

ฉันเพิ่งถูกถามว่าskip-host-cacheและskip-name-resolveสามารถตั้งค่าได้โดยไม่ต้องเริ่ม mysql ใหม่ ลองดู:

mysql> show variables like '%host%';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ************ |
| report_host   |              |
+---------------+--------------+
2 rows in set (0.00 sec)

mysql> show variables like 'skip_%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
| skip_name_resolve     | OFF   |
| skip_networking       | OFF   |
| skip_show_database    | OFF   |
+-----------------------+-------+
4 rows in set (0.00 sec)

mysql> set global skip_name_resolve = 1;
ERROR 1238 (HY000): Variable 'skip_name_resolve' is a read only variable
mysql>

ดังที่แสดงskip-host-cacheไม่สามารถมองเห็นได้ในรายการตัวแปรทั่วโลก สำหรับskip_name_resolveมันก็สามารถมองเห็นได้ อย่างไรก็ตามมันไม่สามารถเปลี่ยนแปลงได้แบบไดนามิกเพราะมันเป็นตัวแปรแบบอ่านอย่างเดียว

ดังนั้นskip-host-cacheและskip-name-resolveสามารถเปลี่ยนแปลงได้ผ่านการรีสตาร์ท mysql เท่านั้น


เรามีปัญหาใด ๆ จากการปิดใช้งานการค้นหา DNS หรือไม่
Uday

@Uday กังวลเฉพาะภายใน MySQL คือ: คุณไม่สามารถใช้ชื่อ DNS mysql.userได้อย่างมีประสิทธิภาพในคอลัมน์โฮสต์ของ หากคุณมีคุณจะต้องแทนที่ด้วยที่อยู่ IP สาธารณะหรือส่วนตัว (ดีกว่า) แทน
RolandoMySQLDBA

@RolandoMySQLDBA มีวิธีเพิ่มskip-host-cacheและskip-name-resolveไม่ต้องรีสตาร์ท MySql หรือไม่
Ran

@ รันขออภัยคำตอบคือไม่ ฉันอัปเดตคำตอบเพื่อสะท้อนสิ่งนี้
RolandoMySQLDBA

จะมีปัญหาที่เป็นไปได้เช่นการเชื่อมต่อจากlocalhostหรือปัญหาอื่น ๆ ? ฉันกำลังประสบปัญหาสำหรับ ip243.221.167.124.adsl-pool.sx.cn
Malay M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.