mysql之%

mysql在创建用户时可以指定host,通配符%表示可以匹配任何host(当然localhost除外,localhost优先级大于%)

create user 'hys'@'%' identified by 'hello';
create user 'hys'@'localhost' identified by 'wtf';
create user 'hys'@'127.0.0.1' identified by '666';
flush privileges;

使用命令进行连接mysql -uhys -phello,报错如下 使用命令进行连接mysql -uhys -pwtf则可以正常连接。 使用命令进行连接mysql -uhys -h127.0.0.1 -p666 说明mysql在进行连接时把127.0.0.1转换成了localhost 删除掉hys@localhost 使用命令进行连接mysql -uhys -h127.0.0.1 -p666可正常连接


结论: 1.通配符不包括localhost 2.当同一用户host同时存在localhost%时,会优先匹配localhost 3.当同一用户host同时存在localhost127.0.0.1时,虽然连接时指定了-h127.0.0.1但也会先匹配localhost 4.当存在127.0.0.1而不存在localhost,指定-h127.0.0.1可以进行连接


Ref: https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/problems-connecting.html