Files
aijianhua/docs/README_DATABASE.md

124 lines
3.0 KiB
Markdown
Raw Normal View History

# 数据库配置和使用指南
## 📋 数据库连接信息
### 开发环境 (MySQL)
- **主机**: 129.211.213.226
- **端口**: 9527
- **用户名**: root
- **密码**: aiotAiot123!
- **数据库**: ajhdata
### 生产环境 (MySQL)
- **主机**: 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文件预留
## 🔧 可用脚本命令
| 命令 | 描述 |
|------|------|
| `npm run db:init` | 完整数据库初始化验证(脚本位于 `/scripts/backend/` 目录) |
| `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)