# mysql_cmdb **Repository Path**: howuger/mysql_cmdb ## Basic Information - **Project Name**: mysql_cmdb - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-14 - **Last Updated**: 2026-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySQL Config Manager 一个基于 Flask 的轻量级 MySQL 配置参数管理 Web 应用,通过 `performance_schema.variables_info` 表实现对多个 MySQL 实例的配置参数进行集中管理。 ## 功能特性 - **多实例管理**:支持同时管理多个 MySQL 服务器实例 - **参数查询**:基于 `performance_schema.variables_info` 和 `global_variables` 查询所有配置参数 - **搜索过滤**:支持按变量名、值和来源进行搜索过滤 - **分页浏览**:支持分页浏览大量参数 - **参数详情**:展示变量的完整信息(当前值、来源、路径、最小/最大值、设置时间等) - **在线修改**:支持在线修改全局参数值 - **Session vs Global**:对比展示 Session 和 Global 级别的值 ## 技术栈 - **后端框架**:Flask 2.3.3 - **数据库驱动**:mysql-connector-python 8.2.0 - **配置管理**:PyYAML 6.0.1 - **前端框架**:Bootstrap 5.3.0 ## 前提条件 ### Python 环境 - Python 3.8+ ### MySQL 环境 - MySQL 5.7+ 或 MariaDB 10.2+ - `performance_schema` 必须启用 - 用户需要具备以下权限: - `SELECT` 权限访问 `performance_schema` - `SUPER` 权限以修改全局参数 ## 安装步骤 ### 1. 克隆项目 ```bash git clone cd mysql_cmdb ``` ### 2. 创建虚拟环境(推荐) ```bash # Windows python -m venv venv venv\Scripts\activate # Linux/macOS python3 -m venv venv source venv/bin/activate ``` ### 3. 安装依赖 ```bash pip install -r requirements.txt ``` ## 配置说明 ### 配置文件格式 编辑 `config.yaml` 文件,添加 MySQL 实例配置: ```yaml mysql_instances: - name: production_mysql host: 192.168.1.100 port: 3306 username: admin password: your_password description: Production MySQL Server - name: staging_mysql host: 192.168.1.101 port: 3306 username: admin password: your_password description: Staging MySQL Server ``` ### 配置参数说明 | 参数 | 说明 | 必填 | |------|------|------| | name | 实例名称(用于标识) | 是 | | host | MySQL 主机地址 | 是 | | port | MySQL 端口号 | 是 | | username | 用户名 | 是 | | password | 密码(可为空) | 否 | | description | 实例描述 | 否 | ### 启用 performance_schema 确保目标 MySQL 服务器已启用 `performance_schema`: ```sql -- 临时启用(重启后失效) SET GLOBAL performance_schema = ON; ``` 或在 `my.cnf` / `my.ini` 中添加: ```ini performance_schema = ON ``` ## 运行方式 ### 开发模式 ```bash python app.py ``` 应用将在 `http://127.0.0.1:5000` 启动。 ### 生产模式 **注意:生产环境必须禁用 debug 模式!** ```bash # 设置环境变量 export FLASK_DEBUG=False export FLASK_APP=app.py # 使用 WSGI 服务器(如 Gunicorn) pip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 app:app ``` ## 使用指南 ### 添加实例 1. 访问首页,点击 "Add Instance" 或直接访问 `/instance/add` 2. 填写实例信息(名称、主机、端口、用户名、密码) 3. 点击 "Add Instance" 完成添加 ### 浏览参数 1. 在左侧导航栏选择一个实例 2. 使用搜索框按变量名或值搜索 3. 使用下拉框按参数来源过滤 4. 使用分页导航浏览 ### 修改参数 1. 点击参数名称进入详情页 2. 在 "New Value" 输入框中输入新值 3. 点击 "Update Global Value" 提交修改 ## 安全注意事项 ### 1. 密码明文存储 当前配置文件 `config.yaml` 中的密码以明文形式存储。建议在生产环境中: - 使用环境变量存储敏感信息 - 或使用加密配置文件 ### 2. Debug 模式 `app.py` 中默认启用了 debug 模式,生产环境必须禁用: ```python app.run(debug=False, host='0.0.0.0', port=5000) ``` ### 3. SQL 注入风险 参数修改功能使用了动态 SQL 构建,虽然变量值使用了参数化查询,但变量名部分仍存在潜在风险。建议在部署前: - 添加变量名白名单验证 - 或使用预定义的允许修改的参数列表 ### 4. 网络安全 - 建议仅在内网环境中部署 - 使用 HTTPS 协议 - 限制访问 IP ## 项目结构 ``` mysql_cmdb/ ├── app.py # Flask 主应用入口 ├── config.yaml # MySQL 实例配置文件 ├── requirements.txt # Python 依赖列表 ├── README.md # 项目说明文档 ├── app/ │ ├── __init__.py # 包初始化文件 │ └── db.py # 数据库连接和查询逻辑 └── templates/ ├── base.html # 基础模板(导航栏、布局) ├── index.html # 首页(无实例时显示) ├── variables.html # 参数列表页 ├── variable_detail.html # 参数详情页 └── add_instance.html # 添加实例页 ``` ## 故障排除 ### 连接失败 - 检查 `config.yaml` 中的主机、端口、用户名、密码是否正确 - 确保 MySQL 服务正在运行 - 确保防火墙允许访问 MySQL 端口 ### performance_schema 相关错误 - 确保 `performance_schema` 已启用:`SHOW VARIABLES LIKE 'performance_schema';` - 如果返回 `OFF`,请参考「启用 performance_schema」部分 ### 权限不足 - 确保用户具有 `SELECT` 权限:`GRANT SELECT ON performance_schema.* TO 'user'@'host';` - 确保用户具有 `SUPER` 权限:`GRANT SUPER ON *.* TO 'user'@'host';` ### 页面无法访问 - 检查 Flask 服务是否正常运行 - 检查端口是否被占用:`netstat -ano | findstr :5000` ## License MIT License