49

我根据第一个命令创建了一个用户,但无法通过 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

4 回答 4

46

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

于 2012-07-24T15:23:56.640 回答
15

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

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

一个很好的阅读是关于连接访问的 MySQL 手册,它演示了它是如何工作的。

于 2012-07-24T15:25:48.640 回答
4

我遇到了与描述相同的情况 - 添加条目user@%不起作用。

然而,添加一个相同的条目user@localhost 再次开始工作。鉴于我们对模式的理解,这看起来确实不直观%

上面 Kent 发现的一个问题是:我们在 users 表中有一个条目行,host:localhost 但它user是空白的。这显然解决了%@localhost在我的规则之前被用作匹配项的user@%规则。

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

...我不知道那个空白是如何到达那里的,或者它是否是故意的。

于 2017-03-27T02:53:36.497 回答
1

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

13.7.1.3。GRANT 语法

GRANT 的 MySQL 和标准 SQL 版本

GRANT 的 MySQL 和标准 SQL 版本之间的最大区别是:

  • MySQL 将权限与主机名和用户名的组合相关联,而不仅仅是用户名。
于 2012-07-24T15:25:03.760 回答