创buildMySQL用户时使用%作为主机

我的MySQL数据库需要两个用户:appuser和支持。
其中一位应用程序开发人员坚持说,我为这些用户创build了四个帐户:

appuser@'%' appuser@'localhost' support@'%' support@'localhost' 

对于我的生活,我无法弄清楚为什么他认为我们需要这个。 不会使用通配符作为主机来处理“本地主机”?

有任何想法吗?

(在这里使用MySQL 5.5)

百分号表示所有的IP,所以本地主机是多余的…有没有需要本地主机的第二个logging。

编辑

实际上,'localhost'在mysql中是特殊的,它意味着通过一个unix套接字(或者我相信windows上的命名pipe道)而不是一个TCP / IP套接字的连接。 使用%作为主机不包含'localhost'

正如@nos在目前接受的这个问题的答案的评论中指出的那样,接受的答案是不正确的。

是的,当通过套接字连接而不是标准TCP / IP连接进行连接时,用户帐户主机使用%localhost是有区别的。

主机值%不包括套接字的localhost ,因此如果要使用该方法进行连接,则必须指定主机值。

如果要从本地主机连接到user@'%' ,请使用mysql -h192.168.0.1 -uuser -p

要提供一个稍微不同的答案到目前为止提供的。

如果你在用户表''@'localhost'有一行匿名用户,那么这将被视为比通配符'user'@'%'更具体。 这就是为什么还需要提供'user'@'localhost'

您可以在本页底部看到更详细的解释。

百分号表示:任何主机,包括远程和本地连接。

本地主机只允许本地连接。

(所以要开始,如果你不需要远程连接到你的数据库,你可以立即摆脱appuser @'%'用户)

所以,是的,它们是重叠的,但…

…有一个设置这两种types的帐户的原因,这是在MySQL文档中解释: http : //dev.mysql.com/doc/refman/5.7/en/adding-users.html 。

如果你的本地主机有一个匿名用户,你可以看到:

 select Host from mysql.user where User='' and Host='localhost'; 

如果你只是创build了用户appuser @'%'(而不是appuser @'localhost'),那么当appuser mysql用户从本地主机连接时, 使用匿名用户帐户 (它优先于你的appuser @ '%'用户)。

这个问题的解决方法是(可以猜测)创buildappuser @'localhost'(更具体的说,是本地主机匿名用户,如果你的appuser从本地主机连接的话,将会使用这个用户)。