MySQL 命令将“@localhost”附加到用户名

Pha*_*nto 5 mysql networking login hostname

我似乎无法弄清楚这一点。

我想使用命令行连接到驻留在另一台服务器上的 MySQL 数据库。我继续为用户创建了用户名和密码。我还授予了该用户对该数据库的所有权限。

使用命令时:mysql -h <hostname> -u <username> -p,我收到以下错误:

ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

问题是它不断将当前机器的主机名附加到用户名中。显然,这user@<local_machine_hostname>是不正确的。

我输入什么并不重要。例如,如果我输入:

mysql -h <hostname> -u '<username>'@'<hostname>' -p
Run Code Online (Sandbox Code Playgroud)

它做同样的事情,只是在错误输出中,它说:

Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'
Run Code Online (Sandbox Code Playgroud)

配置文件中是否有允许发生这种情况的设置?这真的很烦人。我需要设置一个 tikiwiki 服务器,但它无法连接,因为在设置 mysql 的步骤中,它不断将本地计算机的主机名附加到 mysql 登录名。

irc*_*ell 9

MySQL 的权限是基于主机的。当您创建用户(或授予)用户存在时,您提供一个主机名。它可以是 '%' 或 'localhost' 或任何其他 IP 或主机名。这是一个安全功能。你希望这发生。当它告诉您访问被拒绝时,它不会将主机名“附加”到用户名。每个都存储在 mysql.users 表的不同列中。如果您希望能够以该用户的身份从您的机器登录 MySQL,您需要从您的机器上授予该用户访问权限...

来自CREATE USER 上MySQL 文档

每个帐户都使用与 GRANT 语句相同的格式命名;例如,'jeffrey'@'localhost'。如果您仅指定帐户名的用户名部分,则使用“%”的主机名部分。有关指定帐户名称的其他信息,请参阅第 12.4.1.3 节,“GRANT 语法”。