我正在尝试从我的django应用程序连接到远程mysql数据库。这与预期的一样:
In [2]: pymysql.connect(host='remote-host.com', user='user', password='bogus')
Out[2]: OperationalError: (1045, "Access denied for user 'user'@'172.XX.XX.XX' (using password: YES)")
In [3]: pymysql.connect(host='remote-host.com', user='user', password='secret')
Out[3]: <pymysql.connections.Connection at 0x401ef682b0>
但这并不(从django runserver内部):
File "/usr/local/lib/python3.8/site-packages/pymysql/protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python3.8/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
django.db.utils.OperationalError: (1045, "Access denied for user 'user'@'192.168.80.4' (using password: YES)")
所以不知何故,基于shell的连接为客户端获取了一个172/IP地址(大概是docker bridge的IP-它无论如何都不对应于我笔记本电脑的en0 IP),其中runserver中完全相同的代码,完全相同的连接参数导致mysql服务器看到docker容器的IP。
有谁知道发生了什么事,更重要的是我该如何预防?
尝试:
好吧,我不能做很多事情,因为我没有权限修改mysql的接受主机列表或它如何确定客户端IP。
预期:
在两个连接中使用相同的IP地址。
1条答案
按热度按时间iqjalb3h1#
结果发现数据库主机被一些中间件修改了,所以实际上并没有攻击远程主机。也就是说,我仍然想知道为什么不同的源IP被设置。