2025-08-31 23:29:26 +08:00
|
|
|
|
# 数据库配置和使用指南
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 数据库连接信息
|
|
|
|
|
|
|
2025-09-01 01:05:53 +08:00
|
|
|
|
### 开发环境 (MySQL)
|
|
|
|
|
|
- **主机**: 129.211.213.226
|
|
|
|
|
|
- **端口**: 9527
|
2025-08-31 23:29:26 +08:00
|
|
|
|
- **用户名**: root
|
2025-09-01 01:05:53 +08:00
|
|
|
|
- **密码**: aiotAiot123!
|
2025-08-31 23:29:26 +08:00
|
|
|
|
- **数据库**: ajhdata
|
|
|
|
|
|
|
2025-09-01 01:05:53 +08:00
|
|
|
|
### 生产环境 (MySQL)
|
2025-08-31 23:29:26 +08:00
|
|
|
|
- **主机**: 129.211.213.226
|
|
|
|
|
|
- **端口**: 9527
|
|
|
|
|
|
- **用户名**: root
|
|
|
|
|
|
- **密码**: aiotAiot123!
|
|
|
|
|
|
- **数据库**: ajhdata
|
|
|
|
|
|
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
npm install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
复制环境变量模板文件:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cp .env.example .env.development
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
编辑 `.env.development` 文件,根据实际环境修改配置:
|
|
|
|
|
|
```env
|
|
|
|
|
|
NODE_ENV=development
|
|
|
|
|
|
DB_HOST=192.168.0.240
|
|
|
|
|
|
DB_PORT=3306
|
|
|
|
|
|
DB_USERNAME=root
|
|
|
|
|
|
DB_PASSWORD=aiot$Aiot123
|
|
|
|
|
|
DB_DATABASE=ajhdata
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 验证数据库连接
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 完整初始化验证
|
|
|
|
|
|
npm run db:init
|
|
|
|
|
|
|
|
|
|
|
|
# 只检查连接状态
|
|
|
|
|
|
npm run db:check
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📁 配置文件说明
|
|
|
|
|
|
|
|
|
|
|
|
### `config/database.js`
|
|
|
|
|
|
主数据库配置文件,根据环境变量自动选择配置:
|
|
|
|
|
|
- 开发环境: `NODE_ENV=development`
|
|
|
|
|
|
- 生产环境: `NODE_ENV=production`
|
|
|
|
|
|
|
|
|
|
|
|
### `.env.example`
|
|
|
|
|
|
环境变量配置模板,包含所有可配置参数。
|
|
|
|
|
|
|
|
|
|
|
|
### `utils/dbConnector.js`
|
|
|
|
|
|
数据库连接工具类,提供:
|
|
|
|
|
|
- 连接池管理
|
|
|
|
|
|
- SQL查询执行
|
|
|
|
|
|
- 事务支持
|
|
|
|
|
|
- 健康检查
|
|
|
|
|
|
|
|
|
|
|
|
### `scripts/initDatabase.js`
|
|
|
|
|
|
数据库初始化脚本,功能:
|
|
|
|
|
|
- 验证数据库连接
|
|
|
|
|
|
- 检查数据库版本
|
|
|
|
|
|
- 执行SQL文件(预留)
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 可用脚本命令
|
|
|
|
|
|
|
|
|
|
|
|
| 命令 | 描述 |
|
|
|
|
|
|
|------|------|
|
2025-09-01 02:35:41 +08:00
|
|
|
|
| `npm run db:init` | 完整数据库初始化验证(脚本位于 `/scripts/backend/` 目录) |
|
2025-08-31 23:29:26 +08:00
|
|
|
|
| `npm run db:check` | 只检查数据库连接状态 |
|
|
|
|
|
|
| `npm run db:migrate` | 执行数据库迁移(预留) |
|
|
|
|
|
|
| `npm run db:seed` | 填充初始数据(预留) |
|
|
|
|
|
|
|
|
|
|
|
|
## 🛡️ 安全注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. **密码保护**: 数据库密码已配置在环境变量中,不要硬编码在代码里
|
|
|
|
|
|
2. **连接池**: 使用连接池避免频繁创建连接
|
|
|
|
|
|
3. **错误处理**: 所有数据库操作都有完整的错误处理
|
|
|
|
|
|
4. **SQL注入**: 使用参数化查询防止SQL注入
|
|
|
|
|
|
|
|
|
|
|
|
## 📊 性能优化
|
|
|
|
|
|
|
|
|
|
|
|
- **连接池配置**: 最大20连接,最小5连接
|
|
|
|
|
|
- **超时设置**: 获取连接超时60秒,空闲连接超时30秒
|
|
|
|
|
|
- **字符编码**: UTF8MB4支持中文和emoji
|
|
|
|
|
|
- **时区设置**: 东八区(+08:00)
|
|
|
|
|
|
|
|
|
|
|
|
## 🔍 故障排除
|
|
|
|
|
|
|
|
|
|
|
|
### 连接失败
|
|
|
|
|
|
1. 检查网络是否能访问数据库服务器
|
|
|
|
|
|
2. 验证用户名密码是否正确
|
|
|
|
|
|
3. 确认数据库服务是否启动
|
|
|
|
|
|
|
|
|
|
|
|
### 权限问题
|
|
|
|
|
|
1. 检查用户是否有数据库访问权限
|
|
|
|
|
|
2. 确认数据库是否存在
|
|
|
|
|
|
|
|
|
|
|
|
### 性能问题
|
|
|
|
|
|
1. 检查连接池配置是否合理
|
|
|
|
|
|
2. 监控数据库服务器负载
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 开发建议
|
|
|
|
|
|
|
|
|
|
|
|
1. 开发环境使用测试数据库配置
|
|
|
|
|
|
2. 生产环境使用生产数据库配置
|
|
|
|
|
|
3. 定期备份重要数据
|
|
|
|
|
|
4. 使用事务保证数据一致性
|
|
|
|
|
|
|
|
|
|
|
|
## 🔗 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [MySQL官方文档](https://dev.mysql.com/doc/)
|
|
|
|
|
|
- [mysql2 npm包文档](https://www.npmjs.com/package/mysql2)
|
|
|
|
|
|
- [连接池最佳实践](https://github.com/mysqljs/mysql#pooling-connections)
|