为什么我不能使用新创建的MySQL用户登录?

时间:2013-06-25 17:36:44

标签: mysql

我创建了一个MySQL用户,如下所示:

mysql> grant all privileges on *.* to mysql@'%' IDENTIFIED by 'myPassword' with grant option;                           
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

mysql> exit;
Bye

然后我尝试使用新创建的用户登录,但它不起作用。

% mysql -u mysql -pmyPassword
ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)
% 

为什么?

2 个答案:

答案 0 :(得分:7)

我相信localhost是特殊的,不在'%'的覆盖范围内。

问题

mysql> grant all privileges on *.* to mysql@'localhost' IDENTIFIED by 'myPassword' with grant option;       

它应该有效

答案 1 :(得分:5)

这看似违反直觉,但MySQL中的{local}与'%'不匹配。原因是所有'%'匹配所有TCP / IP连接,但来自'localhost'的连接映射到unix域套接字。

有两种可能的解决方案:

  1. 在'localhost'处为用户额外拨款:

    mysql> grant all privileges on *.* to mysql@'localhost' IDENTIFIED by 'myPassword' with grant option;
    

    PS:GRANT之后你没有FLUSH PRIVILEGES。

  2. 强制通过TCP / IP访问:

    % mysql -u mysql -pmyPassword -h 127.0.0.1