我似乎无法找出这一个。
我想使用命令行连接到驻留在另一台服务器上的MySQL数据库。 我继续为用户创build用户名和密码。 我还为该数据库授予了该用户的所有权限。
当使用命令: mysql -h <hostname> -u <username> -p ,出现以下错误:
ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)
问题是它不断将当前机器的主机名追加到用户名中。 显然,那个user@<local_machine_hostname>是不正确的。
不pipe我input什么内容。 例如,如果我input:
mysql -h <hostname> -u '<username>'@'<hostname>' -p
它也是这样,只在错误输出中,它说:
Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'
是否有一个configuration文件中允许这种情况发生的设置? 真的很烦人 我需要build立一个tikiwiki服务器,它不能连接,因为在你设置mysql的步骤中,它不断地将本地机器的主机名附加到mysqllogin名。
MySQL的权限基于主机。 当您将CREATE USER(或GRANT)用户存在时,您提供一个主机名。 它可以是'%'或'localhost'或任何其他IP或主机名。 这是一个安全function。 你想要这样的事情发生。 当它告诉你访问被拒绝时,不会将主机名追加到用户名上。 每个存储在mysql.users表的不同列中。 如果您希望能够以该用户的身份从您的计算机login到MySQL,则需要授予该用户对您计算机的访问权限。
从CREATE USER上的MySQL文档 :
每个帐户都使用与GRANT语句相同的格式命名; 例如,'jeffrey'@'localhost'。 如果仅指定帐户名称的用户名部分,则使用“%”的主机名部分。 有关指定帐户名称的更多信息,请参见第12.4.1.3节“GRANT语法”。