无法使用mysql中创build的用户login

使用这个命令

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中设置了不同的凭据