mysql - 无法使用已存在多年的程序进行连接

时间:2016-03-08 21:35:00

标签: mysql grant

我在税季使用一个程序从我的工作站上的脚本连接到生产mysql服务器。该程序自2007年以来一直在使用。今年我无法连接到mysql服务器,获得“访问被拒绝用户'xxx'@'localhost'”。命令行如下:

mysql -u xxx -p -h ourmysqlserver

其中“xxx”和“ourmysqlserver”是用于此问题的虚拟名称。

当我ping mymysqlserver时,它会解析为我们VPN上的预期IP。

我不希望'xxx'@'localhost'能够连接,因为没有'xxx'@'localhost'的补助,因为它不合适。相反,我们总是使用'​​xxx'@'10.8.0.%',其中10.8.0网络是我们的VPN。我拥有localhost是没有意义的,因为这或者暗示我是从mysqlserver上的帐户进来的,或者我正在尝试连接到mysql的本地实例,我都不想这样做。

在预感中,我输入了'xxx'@'localhost'的GRANTS。你会认为那会有用。但这也不起作用。

虽然这个程序已经存在很长时间了,但多年来我们的DNS,VPN,mysql服务器,mysql客户端和主机服务器配置都发生了变化。

我怀疑mysql客户端的配置中有一些东西迫使它以意想不到的方式行动。但我想解决这个问题,以便能够继续使用现有程序。

编辑:我发现通过将-h参数切换为IP地址而不是DNS名称,可以建立连接。为什么DNS名称不能在某个地方使用(在其他地方仍能正常工作)以及为什么'localhost'出现在错误消息中仍然是个谜。

1 个答案:

答案 0 :(得分:0)

我的直接猜测是dns vs hosts文件问题。我可能是使用hosts文件,它正在解析到loopback适配器,然后当你尝试进行反向dns查找时,它会以localhost的形式返回。

换句话说,我猜这就是发生的事情:

  1. host ourmysqlserver可能在本地解析为127.0.0.1
  2. 127.0.0.1通过reverse dns
  3. 解析为localhost
  4. ip address通过reverse dns
  5. 解析为正确的主机名

    问题可能在/ etc / hosts