【问题标题】:Mysqli connects to totaly different IPMysql连接到完全不同的IP
【发布时间】:2017-05-03 17:50:28
【问题描述】:

我尝试通过 mysqli_connect oop 版本(也经过测试的程序版本)连接到我的服务器(ip 5.39.6*.**),它总是给我这个错误消息:

用户 '****'@'62.214.6*.***' 的访问被拒绝(使用密码:YES)

我的问题是错误消息中的 IP 与我尝试连接的 IP 完全不匹配。我不知道为什么

目前已审查用户和 IP。如果我连接 heidisql(像navicat 这样的程序)一切正常。只有我安装的本地 apache 2.4 (php 5.5) 无法连接到它

Traceroute 看起来像这样:

  1     1 ms     1 ms     1 ms  (censored)
  2    <1 ms    <1 ms    <1 ms  192.168.130.250
  3     2 ms     1 ms     1 ms  (censored)
  4   202 ms     6 ms   205 ms  (censored)
  5     5 ms     4 ms     4 ms  (censored)
  6     5 ms     5 ms     5 ms  (censored)
  7     *        *        *     Zeitüberschreitung der Anforderung.
  8    19 ms    18 ms    18 ms  rbx-g1-a9.fr.eu [94.23.122.76]
  9    19 ms    19 ms    19 ms  vac1-0-a9.fr.eu [178.33.100.149]
 10    21 ms    32 ms    28 ms  vac1-1-n7.fr.eu.firewall [178.33.100.152]
 11    20 ms    21 ms    18 ms  vac1-2-n7.fr.eu.tilera [37.187.36.245]
 12    19 ms    18 ms    18 ms  vac1-3-n7.fr.eu [91.121.215.13]
 13     *        *        *     Zeitüberschreitung der Anforderung.
 14    18 ms    18 ms    18 ms  5.39.6*.**

代码:

    $this->_mysqli = new \MySQLi($this->host, $this->username, $this->password, $this->db, $this->port);

主机:目标 ip (5.39.6*.**) 用户和密码:这里显然是私人的 db:数据库名,服务器上肯定存在 端口:3306

错误:

Access denied for user '*****'@'62.214.6*.***' (using password: YES)

【问题讨论】:

  • 您应该首先提供您正在运行的代码和期望的结果
  • 在失败的 mysqli 行旁边我可以提供的代码不多,显然我不能在这里复制我的整个代码(大约 10k 行)。到现在为止它工作得很好,不知道为什么我现在得到这个错误
  • 我唯一可以补充的是看起来已经很明显的东西。您的错误表明用户拒绝访问,也许检查您是否在 mysqli 行之前设置了正确的用户名/密码?仅从以上信息很难知道
  • 我的问题不是被拒绝的用户。我连接到一个 ip 5.[...],它说我在 62.[...] ip 上拒绝访问,我不明白它为什么要连接到这个 62.[...] ip
  • 谢谢,搞砸了连接 ip 和 ip 连接到...有点尴尬-.-' :D

标签: php mysql mysqli


【解决方案1】:

mysql 权限在“三元组”中工作 你有一个“用户”,你有一个“密码”,还有一个“来源”。

在这种情况下,用户和密码非常明显,origin 代表启动与 mysql 服务器连接的 ip,在您的情况下 62.214.6x.xxx 就像您的 traceroute 表示您的 Internet 连接的公共 ip。

您必须检查服务器上的权限以匹配此三元组,然后执行该操作

select * from information_schema.user_privileges 
  where GRANTEE like '%YOUR_USER%' group by grantee;

你会看到类似的东西

+-------------------------------------+---------------+----------------+--------------+
| GRANTEE                             | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+-------------------------------------+---------------+----------------+--------------+
| 'YOUR_USER'@'127.0.0.1'             | def           | SELECT         | YES          |
| 'YOUR_USER'@'62.214.8.8'            | def           | SELECT         | YES          |

现在您想将用户 '*****'@'62.214.6*.***' 包括在这些授权中。您可以使用 GRANT 命令

grant all privileges on YOUR_BASE.* to '*****'@'62.214.6*.***'
  identified by password 'YOUR_PASSWORD';

如果您的 ip 是动态 IP,您可能必须在每次 ip 更改时授予权限,或者使用通配符覆盖地址范围“62.214.%”,例如

heidisql 有多种连接方式,并且可能使用 ssh 隧道,因此您不会遇到任何问题。

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 2016-09-13
    • 2013-03-11
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2014-05-29
    相关资源
    最近更新 更多