# MySQL数据库配置指南 ## 概述 系统已经配置为使用MySQL数据库,并从`.env`文件读取配置。 ## 配置步骤 ### 1. 确保安装MySQL客户端依赖 安装PyMySQL(MySQL Python驱动): ```bash pip install PyMySQL # 或者 pip install pymysql ``` ### 2. 配置.env文件 编辑项目根目录的`.env`文件: ```env # 数据库配置 # 格式: mysql+pymysql://用户名:密码@主机:端口/数据库名 DATABASE_URL=mysql+pymysql://root:你的密码@localhost/kamaxitong # 示例: DATABASE_URL=mysql+pymysql://root:taiyi1224@localhost/kamaxitong ``` ### 3. 创建数据库 在MySQL中创建数据库: ```sql -- 登录MySQL mysql -u root -p -- 创建数据库 CREATE DATABASE kamaxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 授权(可选) GRANT ALL PRIVILEGES ON kamaxitong.* TO 'root'@'localhost'; FLUSH PRIVILEGES; ``` ### 4. 更新.env文件中的数据库URL `.env`文件中的`DATABASE_URL`格式: ```env # 标准格式 DATABASE_URL=mysql+pymysql://用户名:密码@主机:端口/数据库名 # 本地示例 DATABASE_URL=mysql+pymysql://root:taiyi1224@localhost/kamaxitong # 远程示例 DATABASE_URL=mysql+pymysql://root:password@192.168.1.100:3306/kamaxitong ``` ### 5. 初始化数据库 #### 方式1: 使用Flask-Migrate(推荐) ```bash # 初始化迁移(如果还没有) flask db init # 生成迁移文件 flask db migrate -m "Initial migration" # 应用迁移 flask db upgrade ``` #### 方式2: 使用快速修复脚本 ```bash python quick_fix.py ``` ### 6. 启动应用 ```bash python run.py ``` ## 数据库配置参数说明 | 参数 | 说明 | 示例 | |------|------|------| | 数据库类型 | mysql+pymysql | mysql+pymysql | | 用户名 | MySQL用户名 | root | | 密码 | MySQL密码 | taiyi1224 | | 主机 | 数据库主机 | localhost 或 192.168.1.100 | | 端口 | MySQL端口(可选) | 3306(默认) | | 数据库名 | 要使用的数据库名 | kamaxitong | ## 完整的.env文件示例 ```env # 环境配置 FLASK_ENV=development FLASK_DEBUG=True # 数据库配置 - MySQL DATABASE_URL=mysql+pymysql://root:taiyi1224@localhost/kamaxitong # 安全配置 SECRET_KEY=taiyi1224 AUTH_SECRET_KEY=taiyi1224 # 验证器配置 OFFLINE_CACHE_DAYS=7 MAX_FAILED_ATTEMPTS=5 LOCKOUT_MINUTES=10 MAX_UNBIND_TIMES=3 # 卡密配置 LICENSE_KEY_LENGTH=32 LICENSE_KEY_PREFIX= # API配置 API_VERSION=v1 ITEMS_PER_PAGE=20 # 服务器配置 HOST=0.0.0.0 PORT=5000 # 文件上传配置 MAX_CONTENT_LENGTH=16777216 UPLOAD_FOLDER=static/uploads # 日志配置 LOG_LEVEL=INFO LOG_FILE=logs/kamaxitong.log ``` ## 验证配置 ### 1. 检查.env文件是否被加载 启动应用时查看控制台输出: ``` 成功加载.env文件 ``` ### 2. 验证数据库连接 在Python中测试: ```python from app import create_app from app import db app = create_app() with app.app_context(): print("数据库URI:", app.config['SQLALCHEMY_DATABASE_URI']) db.create_all() # 测试连接 print("数据库连接成功!") ``` ## 常见问题 ### Q1: ImportError: No module named 'pymysql' **解决方案:** ```bash pip install pymysql ``` ### Q2: 1049 (42000): Unknown database 'kamaxitong' **解决方案:** ```sql CREATE DATABASE kamaxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### Q3: 1045 (28000): Access denied for user 'root'@'localhost' **解决方案:** 1. 检查.env文件中的用户名和密码是否正确 2. 确保MySQL用户有权限访问数据库 3. 重置MySQL root密码 ### Q4: 2003 (HY000): Can't connect to MySQL server **解决方案:** 1. 确保MySQL服务已启动 2. 检查主机和端口是否正确 3. 检查防火墙设置 ### Q5: .env文件没有被加载 **解决方案:** 1. 确保python-dotenv已安装:`pip install python-dotenv` 2. 确保.env文件在项目根目录 3. 重启应用 ## 性能优化建议 ### 1. 配置MySQL连接池 在config.py中已经配置: ```python SQLALCHEMY_ENGINE_OPTIONS = { "future": True, "pool_pre_ping": True, "pool_size": 10, "pool_recycle": 3600, "max_overflow": 20 } ``` ### 2. 启用MySQL查询缓存 在MySQL配置文件中(my.cnf): ```ini [mysqld] query_cache_type = 1 query_cache_size = 256M ``` ### 3. 设置合适的字符集 确保数据库、表、列都使用utf8mb4字符集: ```sql CREATE DATABASE kamaxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ## 备份和恢复 ### 备份数据库 ```bash mysqldump -u root -p kamaxitong > backup.sql ``` ### 恢复数据库 ```bash mysql -u root -p kamaxitong < backup.sql ``` ## 总结 系统已经配置为使用MySQL和.env文件: - ✅ .env文件支持 - ✅ MySQL配置已就绪 - ✅ 从环境变量读取配置 - ✅ 支持开发/生产/测试环境 只需确保MySQL服务运行、依赖安装正确、.env文件配置正确即可!