2024年10月

起因是,mysql无法连接远程的机器,但是用python却可以。

写了这个脚本

import pymysql
import argparse

# MySQL 连接信息
host = '192.168.1.1'  # 替换为你的 MySQL 服务器 IP
user = 'ecology'         # 替换为你的 MySQL 用户名
password = 'ecology1234'  # 替换为你的 MySQL 用户密码
database = 'ecology'   # 替换为数据库名




def execute_query(query):
    try:
        # 建立连接
        connection = pymysql.connect(
            host=host,
            user=user,
            password=password,
            database=database,
            port=3306,   # MySQL 默认端口
            connect_timeout=5  # 设置超时时间
        )
        print("Connection successful!")

        # 执行查询
        with connection.cursor() as cursor:
            cursor.execute(query)
            results = cursor.fetchall()  # 获取所有结果
            columns = [desc[0] for desc in cursor.description] if cursor.description else []  # 获取列名

            print("Query executed successfully.")
            return columns, results  # 返回列名和查询结果

    except pymysql.MySQLError as e:
        print("Connection failed.")
        print(f"Error: {e}")
        return None, None

    finally:
        # 关闭连接
        if 'connection' in locals() and connection.open:
            connection.close()
            print("Connection closed.")

if __name__ == "__main__":
    # 设置命令行参数解析
    parser = argparse.ArgumentParser(description="Execute a MySQL query from command line.")
    parser.add_argument("query", type=str, help="The SQL query to execute.")
    args = parser.parse_args()

    # 从命令行参数接收 SQL 查询
    query = args.query
    columns, results = execute_query(query)

    # 打印查询结果
    if results is not None:
        # 打印列名
        print("Columns:", columns)
        # 打印每一行结果
        for row in results:
            print(row)

用法:
python testmy.py "SHOW COLUMNS FROM ws_datasource;"
python testmy.py "select * FROM weaver_sso LIMIT 100;"

https://my.f5.com/manage/s/article/K41313478
Use the following Send and Receive strings for the specific Microsoft Server versions.

2008
Send String: \x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x03\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0E\xD0\x00\x00\x12\x34\x00\x02\x09\x08\x00\x02\x00\x00\x00
2012
Send String: \x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x03\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0E\xD0\x00\x00\x12\x34\x00\x02\x07\x08\x00\x02\x00\x00\x00
2012 R2
Send String: \x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x0b\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0E\xD0\x00\x00\x12\x34\x00\x02\x09\x08\x00\x02\x00\x00\x00
2016
Send String: \x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x0b\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0e\xd0\x00\x00\x124\x00\x02\x1f\x08\x00\x08\x00\x00\x00
2019
Send String:\x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x0b\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0e\xd0\x00\x00\x12\x34\x00\x03\x00\x08\x00\x02\x00\x00\x00 
2022
Send String: \x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x0b\x00\x00\x00
Receive String: \x03\x00\x00\x13\x0e\xd0\x00\x00\x124\x00\x02\x1f\x08\x00\x08\x00\x00\x00