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

263 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MySQL数据库配置指南
## 概述
系统已经配置为使用MySQL数据库并从`.env`文件读取配置。
## 配置步骤
### 1. 确保安装MySQL客户端依赖
安装PyMySQLMySQL 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文件配置正确即可