Michael@192.168.1.10和Michael @ localhost是完全不同的用户吗?他们可以有不同的密码吗?如果是这样,如果允许一个人从任何主机连接会发生什么?
mysql> SELECT Host,User FROM mysql.user;
+--------------+------------+
| Host | User |
+--------------+------------+
| 127.0.0.1 | root |
| 192.168.1.10 | Michael |
| ::1 | root |
| localhost | Michael |
| localhost | git |
| localhost | root |
+--------------+------------+
6 rows in set (0.00 sec)
PS。我最终要做的是创建一个可以从192.168.1连接的用户。*其中*是通配符。不是我的问题,但会赞赏评论。感谢
答案 0 :(得分:2)
请参阅Access Control, Stage 1: Connection Verification:
仅当某个
Host
表行中的User
和user
列与客户端主机名和用户名匹配且客户端提供该行中指定的密码时,服务器才接受连接[ deletia ]您的身份基于两条信息:
您连接的客户端主机
您的MySQL用户名
[ deletia ]传入连接的客户端主机名和用户名可以匹配
user
表中的多行。[ deletia ]当可能存在多个匹配项时,服务器必须确定要使用哪些匹配项。它解决了这个问题如下:
每当服务器将用户表读入内存时,它会对行进行排序。
当客户端尝试连接时,服务器会按排序顺序查看行。
服务器使用与客户端主机名和用户名匹配的第一行。
服务器使用排序规则,首先对具有最特定
Host
值的行进行排序。文字主机名和IP地址是最具体的。 (文字IP地址的特殊性不受其是否具有网络掩码的影响,因此192.168.1.13
和192.168.1.0/255.255.255.0
被视为同等特定。)模式'%'
表示“任何主机”并且是最不具体的。空字符串''
也表示“任何主机”,但在'%'
之后排序。具有相同Host
值的行首先按最具特定的User
值排序(空白User
值表示“任何用户”且最不具体)。对于具有同等特定Host
和User
值的行,订单是不确定的。
因此:
Michael@192.168.1.10和Michael @ localhost是完全不同的用户吗?
是
他们可以使用不同的密码吗?
是
如果是这样,如果允许一个人从任何主机连接会怎么样?
MySQL会首先尝试匹配更具体的主机规范,并且只有在失败的情况下才会尝试匹配通配符主机。