我好像就是无法弄清楚这一点。
我想使用命令行连接到另一台服务器上的 MySQL 数据库。我继续为用户创建用户名和密码。我还授予该用户该数据库的所有权限。
当使用命令:时mysql -h <hostname> -u <username> -p
,出现以下错误:
ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)
问题是它不断将当前机器的主机名附加到用户名中。显然,这user@<local_machine_hostname>
是不正确的。
我输入什么都没关系。例如,如果我输入:
mysql -h <hostname> -u '<username>'@'<hostname>' -p
它的作用是一样的,只是在错误输出中,它显示:
Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'
配置文件中是否有允许这种情况发生的设置?这真的很烦人。我需要设置一个 tikiwiki 服务器,但它无法连接,因为在设置 mysql 的步骤中,它不断将本地计算机的主机名附加到 mysql 登录名。
答案1
MySQL 的权限基于主机。当您创建用户(或授予)用户时,您需要提供主机名。它可以是“%”或“localhost”或任何其他 IP 或主机名。这是一项安全功能。您希望这样做。当它告诉您访问被拒绝时,它不会将主机名“附加”到用户名。每个都存储在 mysql.users 表的不同列中。如果您希望能够以该用户的身份从您的计算机登录 MySQL,您需要从您的计算机授予该用户访问权限...
每个帐户都使用与 GRANT 语句相同的格式命名;例如,'jeffrey'@'localhost'。如果仅指定帐户名的用户名部分,则使用主机名部分 '%'。有关指定帐户名的更多信息,请参见第 12.4.1.3 节“GRANT 语法”。
答案2
转到 mysql wworkbannch 并输入代码
ALTER USER ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';