用户''%'和'用户'@'localhost'不一样吗?

时间:2012-07-24 15:21:43

标签: mysql

我按照第一个命令创建了一个用户,但无法通过localhost(linux)登录。此链接mysqldoc表示我需要使用相同名称创建第二个用户,但使用第二个命令块中的语法。

mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON my_upload.* TO 'myuser'@'%' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)

所以我尝试了如下,确实有效。但这两个单独的用户是谁?如果我改变一个pw,另一个会同步,还是他们真的是单独的用户?

mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON my_upload.* TO  'myuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

4 个答案:

答案 0 :(得分:27)

User@%将允许从所有位置进行访问。 User@localhost只允许从localhost访问。他们是两个不同的用户,有两个不同的密码(虽然您可以将它们设置为相同的密码,但如果您更新一个密码,另一个密码将不会自动更新)

答案 1 :(得分:10)

基本上是的,这些是两个不同的用户,可能具有(可能)不同的权限和(可能)不同的密码。

  • myuser @%:用户myuser,从任何主机连接。
  • myuser @ localhost:用户myuser,仅从localhost连接。

好的阅读是MySQL manual about connection access,它演示了它的工作原理。

答案 2 :(得分:1)

即使它们意味着相同,或者如果包含另一个,它们确实是独立的用户!

13.7.1.3. GRANT Syntax

  

GRANT的MySQL和标准SQL版本

     

MySQL和标准SQL版本之间的最大差异   GRANT是:

     
      
  • MySQL将权限与主机名和的组合相关联   用户名,而不仅仅是用户名。
  •   

答案 3 :(得分:1)

我遇到了与描述相同的情况 - 为user@%添加条目无效。

然而为相同的user@localhost 添加条目会再次开始工作。 鉴于我们对%模式的理解,这似乎不直观!

肯特上面发现的一个问题是: 我们在host:localhost 的用户表格中有一个输入行,但user为空白。这显然已经解决了%@localhost的规则,该规则在我的user@%规则之前被用作匹配。

简短回答 - 检查user表中的空白或通配符用户名。

......我不知道那个空白是怎么到达的,或者是否是故意的。