You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python批量验证MySQL服务器默认账号密码并输出可用IP

当然有简便的实现方式!我帮你整理了一套实用的批量测试方案,核心就是遍历IP列表逐个尝试连接,捕获异常后只保留成功的结果。

批量MySQL连接测试实现

1. 核心思路

通过循环遍历你的服务器IP列表,对每个IP尝试使用预设的账号密码建立连接,利用异常捕获跳过连接失败的情况,最后仅输出连接成功的IP地址。

2. 完整代码示例

import mysql.connector
from mysql.connector import Error

# 配置预设的默认账号密码
DEFAULT_USER = "yourusername"
DEFAULT_PASSWORD = "yourpassword"

# 替换成你的服务器IP列表
mysql_server_ips = [
    "192.168.1.20",
    "192.168.1.21",
    "localhost",
    "10.1.0.15",
    "10.1.0.16"
]

def check_mysql_connectivity(host_ip):
    """测试单个IP的MySQL连接是否成功"""
    try:
        # 尝试建立连接,可添加超时避免卡顿
        conn = mysql.connector.connect(
            host=host_ip,
            user=DEFAULT_USER,
            password=DEFAULT_PASSWORD,
            connection_timeout=5  # 5秒超时,可根据需求调整
        )
        if conn.is_connected():
            conn.close()  # 成功连接后及时关闭
            return True
    except Error:
        # 连接失败时静默跳过,不输出错误信息
        pass
    return False

# 执行测试并输出结果
print("可成功连接的MySQL服务器IP:")
for ip in mysql_server_ips:
    if check_mysql_connectivity(ip):
        print(ip)

3. 实用优化建议

  • 从文件加载IP列表:如果服务器数量很多,把IP写入文本文件(每行一个IP),用以下代码读取:
    with open("mysql_servers.txt", "r", encoding="utf-8") as f:
        mysql_server_ips = [line.strip() for line in f if line.strip()]
    
  • 多线程加速测试:服务器数量超过几十台时,用多线程并行测试能大幅节省时间,示例片段:
    import threading
    
    def test_and_print(ip):
        if check_mysql_connectivity(ip):
            print(ip)
    
    print("可成功连接的MySQL服务器IP:")
    threads = []
    for ip in mysql_server_ips:
        t = threading.Thread(target=test_and_print, args=(ip,))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
    
  • 添加详细日志(可选):如果需要记录失败原因,可以在except块里打印错误信息,用于排查问题:
    except Error as e:
        print(f"IP {host_ip} 连接失败: {e}")
    

内容的提问来源于stack exchange,提问作者Zac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:32:44