-1

连接到mysql和@localhost似乎是一个众所周知的问题:

在以下情况下连接:

mysql -uadmin2 -p

不连接时(重复@localhost)

$ mysql -uadmin2@localhost -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'admin2@localhost'@'localhost' (using password: YES)

下面转储的是特定用户的 mysql.user。

mysql> select * from mysql.user where user='admin2'\G
*************************** 1. row ***************************
                  Host: localhost
                  User: admin2
              Password: *ECED01ACC1794471BCD067ECFEF085F99EDBFA23
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: 
 authentication_string: 
1 row in set (0.00 sec)

显示来自 dbVisualizer 的错误的屏幕截图:

dbVisualizer 连接信息

我尝试了他们论坛上推荐的内容,这是其他人抱怨的地方

grant all privileges on *.* to 'admin3'@'%' identified by 'mypass' with grant option;

但为他们工作,但不是我!

FWIW 其 MAMP 运行版本 5.5.33 的 mysql。我已经刷新了权限,尝试使用 IP 地址,将字段留空(根据屏幕截图),在这里查看了类似的解决方案,现在我没有想法了。

任何人有任何进一步的建议,我将非常感激。

谢谢

凯文

4

1 回答 1

1

重复的用户名不是有用的信息,你只是不能在命令行设置用户主机名,这不是它的工作原理。它是根据您连接的主机名设置的。这是有道理的,您不希望我尝试使用“admin2@localhost”通过互联网从我的计算机连接到您的服务器并进入。

可能起作用的一件事是 MySQL 通过 localhost(通过本地计算机上的套接字文件完成)与 127.0.0.1(通过 TCP 网络完成)具有不同的连接权限,您可能必须添加localhost除了%(我的回忆很模糊)之外,还明确授予用户权限:

grant all privileges on *.* to 'admin3'@'localhost' identified by 'mypass' with grant option;

另外,我刚刚注意到您正在向 admin3 授予权限,但尝试使用 admin2 登录 - 如果这就是您在现实中所做的事情,那么您肯定会遇到问题。

其他想法:admin2 是否有权访问您尝试连接的数据库?我注意到您使用的是非标准端口(8889),但没有在命令行连接中指定它(尽管它可能在某些配置文件中),但事实上您得到的是“拒绝访问”而不是无法连接表明这不是问题。

仔细检查密码,检查您的日志,尝试其他客户端,但这不是我认为的任何“著名”问题。

有关 localhost 与 127.0.0.1 的更多信息,请参阅此 SO 问题

于 2014-04-22T23:46:15.740 回答