我正在尝试禁用 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
但是我仍然可以通过 localhost 连接到它,这对我来说没有意义。
mysql -h localhost -u root -p -P 3412
我在这里做了一些研究:
如果您选择使用 skip-name-resolve,请确保您的 MYSQL 连接权限设置为允许 IP,而不是主机。
在大多数系统上,对于本地 MySQL 服务器,您需要对 ipv4 使用 host=127.0.0.1,对 ipv6 网络使用 host=::1,而不是经典的“host=localhost”。
如果 DNS 解析被禁用,为什么我仍然可以通过 localhost 连接?
MySQL 特别对待连接
localhost
。在这种情况下,它通过 UNIX 域套接字连接,而不是通过 TCP,并且该字符串localhost
仍用于用户身份验证。