gpt4 book ai didi

Mysql python - 随机(每隔一次尝试)访问被拒绝

转载 作者:行者123 更新时间:2023-11-29 01:50:17 25 4
gpt4 key购买 nike

我想不通,也不知道如何编写代码。

def get_connection():
cnx = MySQLdb.connect(**DB_CONFIG)
print("Connected")
cnx.close()
print("Closed")


12:08 $ python test_mysql.py && python test_mysql.py
Connected
Closed
Traceback (most recent call last):
File "test_mysql.py", line 4, in <module>
get_connection()
File "XX"/mysql/tbred_mysql.py", line 7, in get_connection
cnx = MySQLdb.connect(**DB_CONFIG)
File "XX/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "XX/lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'XXXX'@'10.0.8.5' (using password: YES)")

我紧接着运行它们,因为它更容易演示,但您可以等待 10 或 15 秒,它仍然会发生。我工作,然后它不工作。

当它像这样失败时,没有任何内容写入 mysql 错误日志。如果我将用户更改为不存在的用户以强制出现此错误,则会将一条记录写入 mysql 错误日志。

编辑:我可以在没有 python 的情况下重现问题。如果我尝试通过 linux 中的 mysql 命令行客户端进行远程连接,我会得到相同的结果。我还发现它不是随机的,它的所有其他连接都与尝试之间的时间无关。第 1 个有效,第 2 个错误,第 3 个有效,第 4 个错误,它们之间的时间间隔无关紧要。此外,对于这些失败,它们不会像正常访问被拒绝消息那样记录到 mysql 错误日志中。

我疯了!

最佳答案

重复我上面的评论。

设置选项 skip_name_resolve 可解决您的问题。

默认情况下,MySQL 服务器会尝试对客户端 IP 地址进行反向 DNS 查找,以确保您的用户是从授权的主机名登录的。如果您的本地 DNS 服务器速度慢或间歇性不稳定,这就是一个问题。它会减慢甚至导致 MySQL 连接错误,原因尚不清楚。

使用 skip_name_resolve 告诉服务器跳过此验证。这应该可以消除 DNS 导致的错误和性能下降。

这意味着您不能在 GRANT 语句中使用主机名。您必须通过 IP 地址或 % 等通配符来识别用户的授权客户端主机。

https://dev.mysql.com/doc/refman/5.7/en/host-cache.html说:

To disable DNS host name lookups, start the server with the --skip-name-resolve option. In this case, the server uses only IP addresses and not host names to match connecting hosts to rows in the MySQL grant tables. Only accounts specified in those tables using IP addresses can be used. (Be sure that an account exists that specifies an IP address or you may not be able to connect.)

通配符也可以。例如,您可以 GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.%'

关于Mysql python - 随机(每隔一次尝试)访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46979390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com