无法使用mysql connector python连接到localhost,错误1130

dfddblmv  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(323)

我正在尝试使用 mysql-connector-python . mysql服务器设置为只允许本地连接。它适用于许多其他应用程序,但在我的python脚本中不起作用。我正在使用以下命令:

db_config = {'host': 'localhost', 'user': 'aaa', 'password': 'xxx', 'database': 'aaa'}
conn = mysql.connector.connect(**db_config)

我得到以下错误:

mysql.connector.errors.DatabaseError: 1130: Host 'static-xxx-xxx-xxx-xxx.net.upcbroadband.cz' is not allowed to connect to this MySQL server

哪里 static----.net.upcbroadband.cz 是与我的公共静态ip地址对应的主机名。
我试着换衣服 host 参数到 127.0.0.1 ,但没用。
有趣的是,当我尝试从终端登录时: mysql -h localhost -u aaa -p ,没有问题,但是,当我这样做时: mysql -h 127.0.0.1 -u aaa -p ,我得到同样的错误,

ERROR 1130 (HY000): Host 'static-xxx-xxx-xxx-xxx.net.upcbroadband.cz' is not allowed to connect to this MySQL server

有可能吗 mysql-connector-python 以某种方式将本地主机转换为公共ip?

lnxxn5zx

lnxxn5zx1#

结果是, MASQUERADE 已为所有外部数据包设置:

sudo iptables --table nat --list

[...]
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.0.0.0/8           anywhere
MASQUERADE  all  --  anywhere             anywhere

当我把它移走的时候 sudo iptables -t nat -D POSTROUTING -j MASQUERADE 问题解决了。
我在尝试的时候就知道了

mysql -h localhost --protocol=TCP

这再次产生了将localhost解析为公共主机名的1130错误。也就是说,如果我理解正确的话 mysql-connector-python 默认情况下使用tcp与 mysql 命令。

相关问题