263 lines
4.8 KiB
Markdown
263 lines
4.8 KiB
Markdown
# 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文件配置正确即可!
|