使用此命令
GRANT ALL PRIVILEGES ON *.* to brian@'%' identified by 'password';
我尝试使用以下方式登录:
mysql -u brian -ppassword
错误是:
ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)
我以 root 身份执行此操作,并且确实尝试刷新权限。
我尝试过无数用户,但它似乎不起作用。我可以创建一个没有密码的用户并且登录有效。命令行和来自 phpmyadmin
您需要显式添加 user@localhost。'%' 与本地主机不匹配。
你肯定用过
并不是
因为后者需要密码哈希值而不是明文密码。这可以解释为什么您无法使用您设置的任何密码登录。
我通常用两个命令来做:
通常不会给我带来任何麻烦
如果您指定主机,会发生什么不同的情况?
mysql -ubrian -ppassword -hlocalhost
mysql -ubrian -ppassword -h127.0.0.1
尝试检查:
SELECT user, host, password, PASSWORD('password') FROM mysql.user
并确保db中的密码和PASSWORD函数的结果相同?
执行以下操作时未建立网络连接:
相反,会建立一个套接字连接。套接字连接与主机通配符“%”不匹配。它们仅匹配主机“localhost”作为安全措施。您可以像这样强制网络连接:
这在大多数情况下都有效,但我见过一些没有效果的系统。如果它适合您,这是避免为每个用户维护成对授权的好方法('user'@'%' 和 'user'@'localhost')
通配符hostname只匹配TCP连接,不是localhost使用的socket连接;你需要一个 % 和 localhost 的条目。
它在没有密码的情况下工作的原因可能是因为您在 ~/.my.cnf 中设置了不同的凭据