https://segmentfault.com/q/1010000000388864
elect Host,User from mysql.user;
+-----------+------+
| Host | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1 | root |
| ArchLinux | |
| ArchLinux | root |
| localhost | |
| localhost | root |
+-----------+------+
如上, 其中ArchLinux是我的主机名。
1. ::1
表示什么呢,任意IP吗?
2. 用户名为空是表示匿名用户吗?
3. 从 localhost
或是从 127.0.0.1
或是从
ArchLinux
发起的连接不都是指我自己的电脑吗?为什么要区分开?
4. 如果局域网内另有一台主机名为 ArchLinux
的电脑,它是不是就可以匿名或是用
root
登陆我的mysql服务器?
5. 我用 mysql -h 127.0.0.1 -u root -p
或是 mysql -h
ArchLinux -u root -p
都提示无法连接到服务器,只有用 mysql -h
localhost -u root -p
才可以登陆,为什么呢?
1、::1应该是表示本地的v6地址
2、没有用户名的话,应该是匿名用户了
3、对于mysql来讲,127.0.0.1和localhost应该不一样的;举个例子,你在linux的/etc/hosts文件中将localhost映射127.0.0.1
这一行注释,那么linux主机已经无法ping通localhost了,但是你用mysql登录命令,指定-h
localhost你依然能登录成功
4、局域网内的
ArchLinux主机,我觉得应该登录不了,因为主机名在网络中最终还是要映射成IP地址的。如果局域网内的那台主机的IP地址没有登录权限,那肯定是登录不了的;
5、这个问题,我也无法回答,mysql -h localhost -u root
-p这样个命令,我试了一下,也不能登录,奇怪!