Alamat IP MySQL [Peringatan] tidak dapat diselesaikan

27

Saya menjalankan MySQL5.6.3 pada mesin virtual CentOS 6.1 yang berjalan pada Windows XP di VirtualBox .

Kartu jaringan dikonfigurasikan dalam mode bridge, jadi mesin fisik & virtual saya berbagi kartu ethernet yang sama.

Di mesin virtual, semuanya berfungsi dengan baik: akses internet, pencarian DNS. Namun, koneksi ke daemon MySQL memerlukan waktu, dan log tetap menampilkan peringatan ini:

[Peringatan] Alamat IP '192.168.1.201' tidak dapat diselesaikan: Kegagalan sementara dalam resolusi nama

192.168.1.201 adalah mesin host saya di mana saya menjalankan klien MySQL.

Sepertinya meskipun pencarian DNS berfungsi dengan baik, membalikkan pencarian DNS berakhir dalam batas waktu.

Ini adalah konfigurasi mesin virtual:

# 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

Apakah ada yang salah dalam konfigurasi jaringan saya?

Benjamin
sumber
lihat jawaban saya yang lain untuk pertanyaan ini: serverfault.com/a/778161/96578
Amin Sh

Jawaban:

49

IMHO Ini terdengar seperti Anda perlu mysqld untuk berhenti menggunakan DNS.

Silakan lakukan hal berikut: Tambahkan ini ke /etc/my.cnf

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

Mulai ulang mysql. Sejak saat itu, mysql tidak akan lagi menyelesaikan alamat melalui DNS.

Cobalah !!!

CAVEAT

Silakan baca opsi ini di Dokumentasi MySQL:

Selain itu, ada satu batasan untuk menggunakan ini: Anda tidak dapat menggunakan nama DNS di kolom host dari salah satu tabel hibah.

UPDATE 2012-12-17 08:37 EDT

Saya baru-baru ini ditanya apakah skip-host-cachedan skip-name-resolvedapat diatur tanpa me-restart mysql. Mari cari tahu:

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>

Seperti yang ditunjukkan, skip-host-cachetidak terlihat dalam daftar variabel global. Adapun skip_name_resolve, itu terlihat. Namun, itu tidak dapat diubah secara dinamis karena itu adalah variabel read-only.

Oleh karena itu, skip-host-cachedan skip-name-resolvehanya dapat diubah melalui restart mysql.

RolandoMySQLDBA
sumber
Apakah kita memiliki masalah sebagai akibat dari menonaktifkan pencarian DNS?
Uday
@Uday Satu-satunya masalah dalam mysql adalah ini: Anda tidak dapat menggunakan nama DNS secara efektif di kolom host mysql.user. Jika ada, Anda perlu menggantinya dengan alamat IP publik atau pribadi (lebih disukai).
RolandoMySQLDBA
@RolandoMySQLDBA apakah ada cara untuk menambah skip-host-cachedan skip-name-resolvetanpa memulai kembali MySql?
Ran
@Bisa Maaf, jawabannya tidak. Saya memperbarui jawaban saya untuk mencerminkan ini.
RolandoMySQLDBA
Bisakah ada masalah yang mungkin terjadi seperti konektivitas dari localhost atau masalah lainnya? Saya menghadapi masalah untuk ip243.221.167.124.adsl-pool.sx.cn
Bahasa Melayu