如何在 Mysql8 中跳過名稱解析並使用 IP 代替?

如何在 Mysql8 中跳過名稱解析並使用 IP 代替?

我正在嘗試禁用 DNS 名稱解析,因為我有許多其他伺服器連接到中央資料庫。 DNS 解析速度很慢,顯然可以像這樣停用:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
port=3412
max_connections=500
skip-name-resolve

但是我仍然可以透過本地主機連接到它,這對我來說沒有意義。

mysql -h localhost -u root -p -P 3412

我做了一些研究這裡

如果您選擇使用skip-name-resolve,請確保您的MYSQL連線權限設定為允許IP,而不是主機。

在大多數系統上,對於本機 MySQL 伺服器,您需要使用 host=127.0.0.1(對於 ipv4)和 host=::1(對於 ipv6 網路),而不是經典的「host=localhost」。

如果停用 DNS 解析,為什麼我仍然可以透過 localhost 連線?

答案1

MySQL 對連線進行localhost特殊處理。在這種情況下,它透過 UNIX 域套接字而不是 TCP 進行連接,並且該字串localhost仍用於使用者身份驗證。

相關內容