- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
1,當 mysql client 發起連接請求時,MySql Server 會主動去查 client 的主機名。
2,首先查找Windows系統目錄下 /etc/hosts 文件,搜索域名和IP的對應關系。
3,如果hosts文件沒有,則查找DNS設置,如果沒有設置DNS服務器,會立刻返回失敗;如果設置了DNS服務器,就進行反向解析,直到timeout。
解決辦法
第一種方法 修改Hosts
在 MySql Server 所在服務器上,修改 Windows 的 hosts 文件,增加一行記錄,如:
100.ZZZ.YYY.XXX dummy.ju690.cn
然后在 100.ZZZ.YYY.XXX 機器上用 Python 發起連接請求,經測試,可以正常連接,說明 MySql Server 這下可以通過 getnameinfo() 解析出100.ZZZ.YYY.XXX 的主機名了。
但這種方法很機械,所以一般采用下面這種方法。
第二種 修改MySql 的配置文件 my.ini
The solution:
Just add skip-name-resolve option to your MySQL configuration file (my.ini).
在 MySql Server 的配置文件 My.ini 中,增加如下兩行:
[mysqld]
skip-name-resolve
它將禁止 MySql Server 對外部連接進行 DNS 解析,使用這一選項可以消除 MySql 進行 DNS 解析的時間。
但需要注意,如果開啟該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求。
可能的后果
如果開啟 skip-name-resolve 選項,要確認 MySql 是否采用過主機名的授權,
在 mysql 中運行如下命令:
mysql> select user,host from mysql.user where host <> 'localhost' ;
一般會得到以“%”授權(也就是任何地址)的記錄:
+------------------+-------------+
| user | host |
+------------------+-------------+
| root | % |
| user_sync | 192.168.0.113 |
如果有host名是什么“DB1”“DB2”的,那么刪除授權表中有 hostanme 的記錄,然后重啟mysqld。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP