Domain-Name-System
遠端連接到 MySQL 伺服器需要很長時間
我有一個 MySQL 5.0.75 伺服器在我的 Linux 筆記本上執行,我想從本地網路中的另一台機器連接到它。
此連接需要 5-6 秒:
mysql -h 172.22.65.101 -u myuser -p123
ping MySQL 主機:
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
有任何想法嗎?當我使用 SHOW PROCESSLIST 監控連接時;在 MySQL 主機上,我可以看到命令是“connect”,使用者是“unauthenticated user”。這一直持續到建立連接。(然後使用者顯示為“myuser”,命令為“sleep”)
我是一名開發人員,需要您就如何找到瓶頸提出建議!
我在主機上的 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
客戶:
mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2
伺服器:
mysql Ver 14.12 Distrib 5.0.75, for debian-linux-gnu (i486) using readline 5.2
可能您在嘗試檢索和驗證連接主機的反向 DNS 時滯後。
skip_name_resolve
您可以通過在伺服器的 my.cnf[mysqld]
部分中打開來測試這一點。如果確實如此(通過消除延遲的參數證明),那麼您可以通過為客戶端正確設置 DNS(正向和反向)或始終執行來解決問題
skip_name_resolve
(這意味著您可以’不要在你的GRANT
表中使用主機名)。