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

Edg*_*ase 34 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)
Run Code Online (Sandbox Code Playgroud)

所以我尝试了如下,它确实有效.但这两个单独的用户是谁?如果我改变一个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)
Run Code Online (Sandbox Code Playgroud)

Mik*_*ant 29

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

  • 当我创建一个用户`User @%`时,我似乎仍然无法从localhost登录.相反,似乎我必须创建一个`User @ localhost`用户.这似乎违背了"用户@%允许从所有位置访问"这一说法,不是吗? (16认同)
  • 更有可能的是,%@ localhost被拒绝访问,并且没有特定的User @ localhost授权,用户将被拒绝从localhost访问,尽管User @%通配符(由于具有较少特定的主机名,稍后处理;根据Bjoern在单独的答案中链接的MySQL手册). (3认同)

Bjo*_*ern 12

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

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

一本好的读物是关于连接访问MySQL手册,它演示了它是如何工作的.