我按照第一个命令创建了一个用户,但无法通过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)
答案 0 :(得分:27)
User@%
将允许从所有位置进行访问。 User@localhost
只允许从localhost访问。他们是两个不同的用户,有两个不同的密码(虽然您可以将它们设置为相同的密码,但如果您更新一个密码,另一个密码将不会自动更新)
答案 1 :(得分:10)
基本上是的,这些是两个不同的用户,可能具有(可能)不同的权限和(可能)不同的密码。
好的阅读是MySQL manual about connection access,它演示了它的工作原理。
答案 2 :(得分:1)
即使它们意味着相同,或者如果包含另一个,它们确实是独立的用户!
GRANT的MySQL和标准SQL版本
MySQL和标准SQL版本之间的最大差异 GRANT是:
- MySQL将权限与主机名和的组合相关联 用户名,而不仅仅是用户名。
答案 3 :(得分:1)
我遇到了与描述相同的情况 - 为user@%
添加条目无效。
然而为相同的user@localhost
添加条目会再次开始工作。
鉴于我们对%
模式的理解,这似乎不直观!
肯特上面发现的一个问题是:
我们在host:localhost
的用户表格中有一个输入行,但user
为空白。这显然已经解决了%@localhost
的规则,该规则在我的user@%
规则之前被用作匹配。
简短回答 - 检查user
表中的空白或通配符用户名。
......我不知道那个空白是怎么到达的,或者是否是故意的。