# 数据库配置指南

## 数据库配置信息

### 腾讯云MySQL配置
- **主机地址**: nj-cdb-3pwh2kz1.sql.tencentcdb.com
- **端口**: 20784
- **数据库名**: xumgdata
- **用户名**: xymg
- **密码**: aiot741$xymg

### 当前状态
🔴 **连接状态**: 访问受限（IP白名单问题）
📍 **当前IP**: 43.153.101.71（需要添加到白名单）

## 解决IP白名单问题

### 步骤1：登录腾讯云控制台
1. 访问 [腾讯云控制台](https://console.cloud.tencent.com/)
2. 登录账户

### 步骤2：找到数据库实例
1. 进入 **云数据库 MySQL** 控制台
2. 找到实例：`nj-cdb-3pwh2kz1`

### 步骤3：配置安全组/白名单
1. 点击实例进入详情页
2. 找到 **安全组** 或 **白名单** 设置
3. 添加以下IP地址：
   - `43.153.101.71` （当前开发服务器IP）
   - `0.0.0.0/0` （临时开放所有IP，生产环境不推荐）

### 步骤4：验证连接
执行以下命令测试连接：
```bash
cd /Users/ainongkeji/code/vue/xlxumu/backend-java/services/farming-service/src/main/resources
node database-manager.js test
```

## 数据库初始化

### 一键初始化
```bash
# 测试连接
node database-manager.js test

# 初始化数据库表结构
node database-manager.js init

# 重置数据库（删除所有数据后重新创建）
node database-manager.js reset
```

### 手动初始化
如果自动化工具无法使用，可以手动执行SQL脚本：

1. **连接数据库**：
   ```bash
   mysql -h nj-cdb-3pwh2kz1.sql.tencentcdb.com -P 20784 -u xymg -p xumgdata
   ```

2. **执行表结构脚本**：
   ```sql
   source /Users/ainongkeji/code/vue/xlxumu/backend-java/services/farming-service/src/main/resources/sql/init_tables.sql;
   ```

3. **执行初始数据脚本**：
   ```sql
   source /Users/ainongkeji/code/vue/xlxumu/backend-java/services/farming-service/src/main/resources/sql/init_data.sql;
   ```

## 数据库表结构

### 核心业务表（21张）

#### 1. 用户权限模块
- `users` - 用户表
- `roles` - 角色表
- `permissions` - 权限表
- `user_roles` - 用户角色关联表
- `role_permissions` - 角色权限关联表

#### 2. 牛只档案模块
- `cattle` - 牛只档案表
- `feeding_records` - 饲养记录表
- `breeding_records` - 繁殖记录表

#### 3. 金融业务模块
- `loan_applications` - 贷款申请表
- `insurance_applications` - 保险申请表
- `claims` - 理赔申请表

#### 4. 交易管理模块
- `transactions` - 交易记录表
- `contracts` - 合同表

#### 5. 政府监管模块
- `farms` - 牧场注册表
- `government_inspections` - 政府检查记录表
- `policies` - 政策法规表

#### 6. 商城管理模块
- `products` - 商品表
- `orders` - 订单表
- `order_items` - 订单商品表
- `product_reviews` - 商品评价表

#### 7. 质量追溯模块
- `product_traceability` - 产品追溯表

#### 8. 系统管理模块
- `operation_logs` - 操作日志表

## 初始数据说明

### 默认用户账户
| 用户名 | 密码 | 角色 | 姓名 | 描述 |
|--------|------|------|------|------|
| admin | 123456 | 系统管理员 | 系统管理员 | 拥有所有权限 |
| farmer001 | 123456 | 养殖户 | 张三 | 测试养殖户1 |
| farmer002 | 123456 | 养殖户 | 李四 | 测试养殖户2 |
| banker001 | 123456 | 银行职员 | 王五 | 测试银行职员 |
| insurer001 | 123456 | 保险员 | 赵六 | 测试保险员 |
| inspector001 | 123456 | 政府检查员 | 钱七 | 测试政府检查员 |
| trader001 | 123456 | 交易员 | 孙八 | 测试交易员 |
| merchant001 | 123456 | 商户 | 周九 | 测试商户 |

### 角色权限配置
- **管理员**: 拥有所有权限
- **养殖户**: 牛只管理、金融申请、交易参与
- **银行职员**: 贷款审核和管理
- **保险员**: 保险审核和理赔管理
- **政府检查员**: 监管检查和质量追溯
- **政府管理员**: 监管数据统计和政策管理
- **交易员**: 交易和合同管理
- **商户**: 商品和订单管理

### 示例数据
- **3个示例牧场**：锡林浩特市第一牧场、东乌旗生态牧场、西乌旗示范牧场
- **5头示例牛只**：包含不同品种和基本信息
- **5个示例商品**：牛肉、乳制品、肉制品等

## 验证安装

### 1. 检查表创建
```sql
SELECT TABLE_NAME, TABLE_COMMENT 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'xumgdata' 
ORDER BY TABLE_NAME;
```

### 2. 检查数据插入
```sql
-- 检查角色数量
SELECT COUNT(*) as role_count FROM roles;

-- 检查权限数量  
SELECT COUNT(*) as permission_count FROM permissions;

-- 检查用户数量
SELECT COUNT(*) as user_count FROM users;

-- 检查管理员用户
SELECT username, real_name, user_type FROM users WHERE user_type = 'admin';
```

### 3. 测试API连接
启动API服务器后，访问：
```
http://localhost:8889/health
http://localhost:8889/api/v1/database/status
```

## 故障排除

### 常见错误

#### 1. Access denied for user
**错误**: `Access denied for user 'xymg'@'43.153.101.71'`
**解决**: 检查IP白名单设置

#### 2. Can't connect to MySQL server
**错误**: `Can't connect to MySQL server`
**解决**: 检查网络连接和端口访问

#### 3. Unknown database
**错误**: `Unknown database 'xumgdata'`
**解决**: 确认数据库名称正确

#### 4. Table already exists
**错误**: `Table 'xxx' already exists`
**解决**: 正常情况，使用 `CREATE TABLE IF NOT EXISTS`

### 联系支持
如遇到问题，请检查：
1. 网络连接是否正常
2. 腾讯云账户状态
3. 数据库实例状态
4. IP白名单配置

## 生产环境注意事项

### 安全配置
1. **修改默认密码**: 所有测试账户密码
2. **限制IP访问**: 仅允许必要的IP访问
3. **启用SSL**: 加密数据传输
4. **定期备份**: 设置自动备份策略

### 性能优化
1. **索引优化**: 根据查询模式优化索引
2. **分区表**: 对大数据量表进行分区
3. **连接池**: 优化数据库连接池配置
4. **监控**: 设置性能监控和告警

### 运维管理
1. **日志管理**: 配置慢查询日志
2. **权限管理**: 定期审查用户权限
3. **版本管理**: 使用数据库迁移工具
4. **容灾**: 配置主从复制和故障转移