来自不同来源的mysql用户是不同的用户吗?

时间:2015-03-23 14:15:22

标签: mysql

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连接的用户。*其中*是通配符。不是我的问题,但会赞赏评论。感谢

1 个答案:

答案 0 :(得分:2)

请参阅Access Control, Stage 1: Connection Verification

  

仅当某个Host表行中的Useruser列与客户端主机名和用户名匹配且客户端提供该行中指定的密码时,服务器才接受连接

[ deletia ]
     

您的身份基于两条信息:

     
      
  • 您连接的客户端主机

  •   
  • 您的MySQL用户名

  •   
[ deletia ]
     

传入连接的客户端主机名和用户名可以匹配user表中的多行。

[ deletia ]
     

当可能存在多个匹配项时,服务器必须确定要使用哪些匹配项。它解决了这个问题如下:

     
      
  • 每当服务器将用户表读入内存时,它会对行进行排序。

  •   
  • 当客户端尝试连接时,服务器会按排序顺序查看行。

  •   
  • 服务器使用与客户端主机名和用户名匹配的第一行。

  •   
     

服务器使用排序规则,首先对具有最特定Host值的行进行排序。文字主机名和IP地址是最具体的。 (文字IP地址的特殊性不受其是否具有网络掩码的影响,因此192.168.1.13192.168.1.0/255.255.255.0被视为同等特定。)模式'%'表示“任何主机”并且是最不具体的。空字符串''也表示“任何主机”,但在'%'之后排序。具有相同Host值的行首先按最具特定的User值排序(空白User值表示“任何用户”且最不具体)。对于具有同等特定HostUser值的行,订单是不确定的。

因此:

  1.   

    Michael@192.168.1.10和Michael @ localhost是完全不同的用户吗?

  2.   

    他们可以使用不同的密码吗?

  3.   

    如果是这样,如果允许一个人从任何主机连接会怎么样?

    MySQL会首先尝试匹配更具体的主机规范,并且只有在失败的情况下才会尝试匹配通配符主机。