无法使用 mysql-connector-python 连接到本地主机,错误 1130
Can't connect to localhost using mysql-connector-python, error 1130
我正在尝试使用 mysql-connector-python
从 pyhton 连接到本地 mysql 数据库。 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-xxx-xxx-xxx-xxx.net.upcbroadband.cz
是对应于我的 public 静态 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
以某种方式将本地主机转换为 public ip?
事实证明,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
再次产生 1130 错误,将 localhost 解析为 public 主机名。这意味着,如果我理解正确的话,mysql-connector-python
默认使用 TCP,这与 mysql
命令相反。
我正在尝试使用 mysql-connector-python
从 pyhton 连接到本地 mysql 数据库。 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-xxx-xxx-xxx-xxx.net.upcbroadband.cz
是对应于我的 public 静态 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
以某种方式将本地主机转换为 public ip?
事实证明,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
再次产生 1130 错误,将 localhost 解析为 public 主机名。这意味着,如果我理解正确的话,mysql-connector-python
默认使用 TCP,这与 mysql
命令相反。