Kamixitong/MYSQL_CONFIG_GUIDE.md
2025-11-11 23:04:01 +08:00

4.8 KiB
Raw Blame History

MySQL数据库配置指南

概述

系统已经配置为使用MySQL数据库并从.env文件读取配置。

配置步骤

1. 确保安装MySQL客户端依赖

安装PyMySQLMySQL Python驱动

pip install PyMySQL
# 或者
pip install pymysql

2. 配置.env文件

编辑项目根目录的.env文件:

# 数据库配置
# 格式: mysql+pymysql://用户名:密码@主机:端口/数据库名
DATABASE_URL=mysql+pymysql://root:你的密码@localhost/kamaxitong

# 示例:
DATABASE_URL=mysql+pymysql://root:taiyi1224@localhost/kamaxitong

3. 创建数据库

在MySQL中创建数据库

-- 登录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格式:

# 标准格式
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推荐

# 初始化迁移(如果还没有)
flask db init

# 生成迁移文件
flask db migrate -m "Initial migration"

# 应用迁移
flask db upgrade

方式2: 使用快速修复脚本

python quick_fix.py

6. 启动应用

python run.py

数据库配置参数说明

参数 说明 示例
数据库类型 mysql+pymysql mysql+pymysql
用户名 MySQL用户名 root
密码 MySQL密码 taiyi1224
主机 数据库主机 localhost 或 192.168.1.100
端口 MySQL端口可选 3306默认
数据库名 要使用的数据库名 kamaxitong

完整的.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中测试

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'

解决方案:

pip install pymysql

Q2: 1049 (42000): Unknown database 'kamaxitong'

解决方案:

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中已经配置

SQLALCHEMY_ENGINE_OPTIONS = {
    "future": True,
    "pool_pre_ping": True,
    "pool_size": 10,
    "pool_recycle": 3600,
    "max_overflow": 20
}

2. 启用MySQL查询缓存

在MySQL配置文件中my.cnf

[mysqld]
query_cache_type = 1
query_cache_size = 256M

3. 设置合适的字符集

确保数据库、表、列都使用utf8mb4字符集

CREATE DATABASE kamaxitong
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

备份和恢复

备份数据库

mysqldump -u root -p kamaxitong > backup.sql

恢复数据库

mysql -u root -p kamaxitong < backup.sql

总结

系统已经配置为使用MySQL和.env文件

  • .env文件支持
  • MySQL配置已就绪
  • 从环境变量读取配置
  • 支持开发/生产/测试环境

只需确保MySQL服务运行、依赖安装正确、.env文件配置正确即可