背景 我能够从一些子网访问一个mysql实例,但不能访问其他子网。至少这就是它的样子。 网络 10.0.21.xx 上的计算机可以连接到MySQL实例。但是从 10.0.7.xx ,我得到“使用密码的用户拒绝访问”。有趣的是,MySQL安装在与它不会对用户进行身份验证的计算机相同的子网(10.0.7.xx)上。
这是我发出的命令。
mysql -u user -h 10.0.7.21 -p
我得到的错误是
ERROR 1045 (28000): Access denied for user 'user'@'10.0.7.30' (using password: YES)
我已经检查了 /etc/mysql/my.cnf 文件,并确保mysqld从所有IP地址进行侦听。我还检查了授权权限,以确保它不依赖于特定的IP地址。
如果有人能给我更多的见解,我会很感激。如果您需要我添加额外信息,请告诉我。
感谢阅读。
答案 0 :(得分:1)
事实证明这是一个DNS问题。让我走这条路的是MySQL Documenation:
如果您在尝试连接时指定主机名,但收到主机名未显示或是IP地址的错误消息,则表示尝试将客户端主机的IP地址解析为名称时,MySQL服务器出错:
它提供的解决方案之一是刷新DNS主机缓存;在我的情况下,我没有这张桌子。
以下是文档中的建议修补程序:
一些永久的解决方案是:
确定DNS服务器的问题并进行修复。
在MySQL授权表中指定IP地址而不是主机名。
在Unix或/的/ etc / hosts中输入客户端计算机名称的条目 Windows上的\ windows \ hosts。
使用--skip-name-resolve选项启动mysqld。
使用--skip-host-cache选项启动mysqld。
在我的情况下,我将本地DNS服务器的IP地址添加到客户端的/etc/resolv.cnf文件中,然后重新启动网络服务(服务网络重启)。
答案 1 :(得分:0)
从错误消息中获取主机名并将其添加到远程 sql 主机访问列表中。
如果您的错误消息是 Access denied for user 'user'@'10.0.7.30' (using password: YES)
,则主机名是 10.0.7.30
。
将它添加到您的远程主机访问列表,您应该已连接。