Closed bfchengnuo closed 4 years ago
所以,你可能会遇到使用 localhost 死活连不通,使用 127.0.0.1 却正常。
需要注意 % 和 localhost 的配置,简单来说,% 是一个通配符,用以匹配所有的 IP 地址,但是不能匹配到 locahost 这个特殊的域名。
也就是说,如果要允许本地登录,单纯只配置一个 % 是不够的 (应该是说对这种方式是不够的),需要同时配置一个 locahost 的账号。
https://jin-yang.github.io/post/mysql-localhost-vs-127.0.0.1-introduce.html
localhot(local) 是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制,因此也不占用网卡的资源。
127.0.0.1 是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
未查证
localhost 使用的 Linux socket,127.0.0.1 使用的是 tcp/ip
Q:为什么我使用 localhost 一直没出问题?
A:因为你的本机中只有一个 mysql 进程, 如果你有一个 node1 运行在 3306, 有一个 node2 运行在 3307; 那么都会连接到同一个 mysql 进程, 因为 localhost 使用 Linux socket, 所以 -P 字段直接被忽略了
这是 linux 套接字网络的特性,win 平台不会有这个问题; 如果非要用,可以尝试在
my.cnf
的[mysql]
区段里添加protocol=tcp