【问题标题】:MySQL: Access denied for user 'user'@'IP_ADDRESS' - Remote access allowed for some hosts fails for other hostsMySQL:用户 'user'@'IP_ADDRESS' 的访问被拒绝 - 某些主机允许的远程访问对其他主机失败
【发布时间】:2017-05-16 20:01:34
【问题描述】:

背景: 我可以从某些子网访问 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 地址。

如果有人能给我更多的见解,我将不胜感激。如果您需要我添加额外信息,请告诉我。

感谢阅读。

【问题讨论】:

  • 因此请检查您正在使用的用户帐户。是否设置为允许来自10.0.7.x 的访问
  • 记住 MySQL 用户帐户有一个允许从其登录的域,因此 CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass'; 只能从 localhost 登录因此尝试将帐户修改为 CREATE USER 'finley'@'10.0.%' IDENTIFIED BY 'some_pass'; 之类的内容
  • confused 您说 MYSQL 已安装在 10.0.7.xx 上,但是当您使用 @987654329 时,您正在连接到 10.0.6.21 上的 MySQL 服务器@
  • 我已对命令中的 IP 地址进行了更正。它应该是 10.0.7.21。在 MySQL.user 表中,主机设置为“%”,因此它应该接受所有主机。

标签: mysql


【解决方案1】:

原来是 DNS 问题。让我走这条路的是MySQL Documenation

如果您在尝试连接时指定了主机名,但收到主机名未显示是 IP 地址的错误消息,这意味着MySQL 服务器在尝试将客户端主机的 IP 地址解析为名称时出错:

它提供的解决方案之一是刷新 DNS 主机缓存;就我而言,我没有这张桌子。

以下是文档中推荐的修复:

一些永久的解决方案是:

  • 确定您的 DNS 服务器出了什么问题并进行修复。

  • 在 MySQL 授权表中指定 IP 地址而不是主机名。

  • 在 Unix 上的 /etc/hosts 或 Windows 上的 \windows\hosts。

  • 使用 --skip-name-resolve 选项启动 mysqld。

  • 使用 --skip-host-cache 选项启动 mysqld。

在我的例子中,我将本地 DNS 服务器的 IP 地址添加到客户端的 /etc/resolv.cnf 文件中,然后重新启动网络服务(服务网络重新启动)。

【讨论】:

    【解决方案2】:

    从您的错误消息中获取主机名并将其添加到您的远程 sql 主机访问列表中。

    如果您的错误消息是Access denied for user 'user'@'10.0.7.30' (using password: YES),那么主机名是10.0.7.30

    将它添加到您的远程主机访问列表中,您应该可以连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2020-07-25
      • 2016-07-05
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多