使用这个命令
GRANT ALL PRIVILEGES ON *.* to brian@'%' identified by 'password';
我尝试login:
mysql -u brian -ppassword
错误是:
ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)
我以root身份执行此操作,并尝试刷新权限。
我与无数的用户尝试过,但它似乎并没有工作。 我可以创build一个没有密码和login作品的用户。 命令行和从phpmyadmin
您需要明确添加user @ localhost。 '%'与localhost不匹配。
你明确使用
... identified by 'password';
并不是
... identified by password 'password';
因为后者需要密码哈希值而不是明文密码。 这将解释为什么您无法使用您设置的任何密码login。
我通常用2个命令来做:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1'; GRANT ALL ON *.* TO 'user1'@'localhost';
通常不给我任何麻烦
如果指定主机,会发生什么不同?
mysql -ubrian -ppassword -hlocalhost
mysql -ubrian -ppassword -h127.0.0.1
尝试检查:
SELECT user, host, password, PASSWORD('password') FROM mysql.user
并确保数据库中的密码和密码function的结果是相同的?
当您执行以下操作时不会build立networking连接:
mysql -u brian -ppassword # with no -h
而是build立一个套接字连接。 套接字连接与主机通配符“%”不匹配。 他们只匹配主机“localhost”作为安全措施。 你可以强制这样的networking连接:
mysql -u brian -ppassword -h `hostname`
这在大多数情况下都是有效的,但是我已经看到了一些没有的系统。 如果它适合你,那么避免为每个用户维护一对('user'@'%'和'user''localhost')是一个好方法
通配符主机名只匹配TCP连接,而不是本地主机使用的套接字连接; 你需要input%和localhost。
没有密码的原因可能是因为你在〜/ .my.cnf中设置了不同的凭据