我很想知道为什么当你第一次在服务器上安装 MySQL 时,root
用户表中会输入三个用户,每个用户都有不同的主机地址。一个带有,localhost
一个带有127.0.0.1
,一个带有::1
(针对 IPv6)。
我不太明白为什么这三个都是必需的。删除root@localhost
&root@::1
并只保留[email protected]
访问权限是否会增强安全性?这样做是好事还是坏事?如果不是,其他主机地址有什么用?
注意:我在基于 ubuntu 的服务器上运行 MySQL。
答案1
对于 MySQL 而言,来自 127.0.0.1 的连接与来自 ::1 的连接不同,因此如果您想从任一协议访问服务器,都需要允许它。localhost 条目用于允许通过套接字连接而不是 tcp 连接进行连接,因此
mysql -h 127.0.0.1 -u user -p
mysql -h ::1 -u user -p
mysql -h localhost -u user -p
都是不同的连接。使用
mysql -h localhost -u user -p -e 'show full processlist\G;'
...
User: user
Host: localhost
...
和
mysql -h localhost --protocol=tcp -u user -p -e 'show full processlist\G;'
...
User: user
Host: localhost:60249
...
注意端口号 60249,它表明这是一个 TCP 连接。