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文件配置正确即可!
|