MySQL sunucusuna uzaktan bağlantı çok uzun sürüyor


10

Yerel ağdaki başka bir makineden bağlanmak istediğim Linux dizüstü bilgisayarımda çalışan bir MySQL 5.0.75 sunucum var.

Bu bağlantı 5-6 saniye sürer:

mysql -h 172.22.65.101 -u myuser -p123

MySQL ana bilgisayarına bir ping komutu:

PING 172.22.65.101 (172.22.65.101) 56(84) bytes of data.
64 bytes from 172.22.65.101: icmp_seq=1 ttl=64 time=0.799 ms
64 bytes from 172.22.65.101: icmp_seq=2 ttl=64 time=0.000 ms
64 bytes from 172.22.65.101: icmp_seq=3 ttl=64 time=6.43 ms
64 bytes from 172.22.65.101: icmp_seq=4 ttl=64 time=0.000 ms
64 bytes from 172.22.65.101: icmp_seq=5 ttl=64 time=3.81 ms
64 bytes from 172.22.65.101: icmp_seq=6 ttl=64 time=0.706 ms
^C
--- 172.22.65.101 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5027ms
rtt min/avg/max/mdev = 0.000/1.959/6.437/2.383 ms

Herhangi bir fikir? SHOW PROCESSLIST ile bağlantıyı izlediğimde; MySQL ana bilgisayarında, komutun "connect" olduğunu ve kullanıcının "kimliği doğrulanmamış kullanıcı" olduğunu görebiliyorum. Bu, bağlantı kurulana kadar sürer. (Kullanıcı daha sonra "kullanıcım" olarak görüntülenir ve komut "uyku" dır)

Ben bir geliştiriciyim ve darboğazın nasıl bulunacağına dair önerilerinize ihtiyacım var!

Ana bilgisayardaki my.cnf:

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice  = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
skip-federated

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[isamchk]
key_buffer = 16M

CLient:

mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

Sunucu:

mysql  Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (i486) using readline 5.2

Yanıtlar:


17

Muhtemelen, bağlanan ana bilgisayarın ters DNS'sini alma ve doğrulama girişiminde bulunmuyorsunuz. skip_name_resolveSunucunun my.cnf, [mysqld]bölümünde açarak bunu test edebilirsiniz .

Aslında durum buysa (gecikmeyi ortadan kaldıran bu parametre ile gösterilir), sorunu istemci için doğru şekilde DNS'yi (ileri ve geri) ayarlayarak veya skip_name_resolveher zaman çalıştırarak (yani GRANTtablolarınızda ana makine adları kullanmayın ).


Bunu düzelttim! MySQL sunucumun my.cnf dosyasında skip_name_resolve tanımladım, MySQL'i yeniden başlattım ve sorun çözüldü. Sana biraz bira borçluyum. :)
Lennart

Hizmet için sevindim. :)
kaos

1
harika teşekkür ederim! sadece açık olmak gerekirse (herkes benim gibi karışıklık durumunda), sadece bir satırda "skip_name_resolve = 1" ya da herhangi bir şey değil "skip_name_resolve" ... aksi takdirde hizmetiniz başlamaz!
James Crowley
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.