今天搭建一个测试环境时,遇到了一个很隐蔽的问题。有必要分享一下|user|password|host|
+------+-------------------------------------------+--------------------+
|root|*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B|localhost|1
|root||db-2.photo.xxx.org|2
|root||127.0.0.1|3
|root||::1|4
| ||localhost|5
| ||db-2.photo.xxx.org|6
|sys|*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|db-2.photo.xxx.org|7
...
...如上图所示,这个里面存在着两个用户名为空的情况。然后问题就是由此而起。在本机(服务器,db-2.photo.xxx.org)mysql -usys -ppass -h`hostname`或者mysql -usys -ppass - h`hostname-i`都提示无法连接。此时配置文件里面没有skip-name-resolve这个参数(DNS解析用的)而用户表里面明明有这个而且密码也对了啊?起初没有注意到这个空用户,没想到它的陷阱,搞了很久也没连上,后来只好请老大了,老大过来一看,直接dropuser''@db-2.photo.xxx.org(删掉这个空用户,老大V5),然后再连,OK搞定。这是什么原因呢?因为mysql在验证权限的时候,首先是验证host列,如果host列正确再验证u