python - mysql连接器错误1130:主机不允许连接到这个MySQL服务器
问题描述
我今天早上刚刚升级到 Verizon Fios 互联网。我有一个 python 脚本可以访问 raspberrypi 上的 MySQL (mariadb) 服务器上的数据库(两者都在同一个网络上)。它适用于我的旧互联网/IP 地址,但现在我得到:
mysql.connector.errors.DatabaseError: 1130: Host 'my_computer_name.myfiosgateway.com' is not allowed to connect to this MySQL server
我采取的导致错误的步骤:
- 确认运行脚本的计算机的新 IP 地址
- 将 python 脚本使用的配置文件中的 IP 地址更改为新的 IP 地址
- 我使用运行脚本的笔记本电脑的新主机 IP 地址在 mysql 服务器中创建了一个新用户
- 将所有权限授予服务器上数据库的新用户
- 刷新权限
- 重启了mysql服务器
我不确定为什么错误返回的是计算机的名称,而不是 IP 地址,但我什至使用错误中返回的确切主机名执行了上述步骤,但它仍然无法正常工作。我还比较了 MySQL 服务器上从旧 IP 地址到新 IP 地址的 GRANTS,它们是相同的。
我可以毫无问题地从我的笔记本电脑上 ping 树莓派。
我是不是忘记了什么?我可能需要更改路由器上的设置吗?当脚本可以工作时,这是唯一与以前不同的地方。
dbConfig.py
dbConfig = {
'host': 'xxx.xxx.x.xxx',
'database': 'NHL',
'user': 'greg',
'password': 'xxxxxx',
}
访问数据库的脚本
import dbConfig as guiConfig
import csv
import time
# connect to server
conn = mysql.connect(**guiConfig.dbConfig)
我的 .cnf 文件中的绑定地址被注释掉了。
解决方案
运行脚本的笔记本电脑是否有可能有另一个 IP 地址?
由于与数据库的 TCP/IP 连接有效,因此创建的 MariaDB 用户或其权限一定有问题。您可以设置以下参数my.cnf
以跳过 DNS 解析。这提高了连接性能,它似乎让你感到困惑。然后,您应该会看到连接的源 IP 地址。
[mysqld]
skip-name-resolve
推荐阅读
- java - 如何在android的内部存储中存储和检索数据
- java - Android Studio - 显示棕色标题且无法移除的模拟器 (Pepper)
- android-management-api - 用户可以取消强制安装应用程序的下载
- android - 带有 MVVM 的 KOtlin 协程
- python - 如何在 AppConfig 就绪功能或其他方式中更新 django 设置?
- android - 我正在使用 Android 制作聊天应用程序。我无法连接到 Firebase
- javascript - 这里的变量 a 如何具有本地范围及其始终返回的窗口对象(通过 this 关键字指向)
- react-native - 你能从 goBack 制作 navigation.goBack 到一些路线吗?
- provisioning - 如何在 ttyUSB0 以外的端口上进行配置?
- c# - 重复为 httpruntime.cache 赋值是不是很糟糕?