Kamixitong/MYSQL_CONFIG_GUIDE.md

263 lines
4.8 KiB
Markdown
Raw Normal View History

2025-11-11 23:04:01 +08:00
# 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文件配置正确即可