通达OA数据库管理与phpMyAdmin配置

📅 2026/7/10 22:01:18 👁️ 阅读次数 📝 编程学习
通达OA数据库管理与phpMyAdmin配置

一、引言

数据库是通达OA的核心数据存储层,掌握数据库管理技能对于二次开发和系统维护至关重要。本文将详细介绍通达OA的数据库架构、phpMyAdmin的安装配置,以及数据库操作的最佳实践。

二、数据库架构总览

2.1 数据库文件目录

通达OA的数据库文件存放在MYOA\data5目录下:

MYOA\data5 ├── BUS/ # 公交线路查询数据库 ├── TD_OA/ # 通达OA主数据库(核心) ├── crscell/ # 报表数据库 ├── MySQL/ # MySQL系统数据库 ├── TD_OA_ARCHIVE/ # 归档数据库 ├── ib_logfile0 # InnoDB日志文件 ├── ib_logfile1 # InnoDB日志文件 └── ibdata1 # InnoDB共享表空间

2.2 数据库关系图

Mermaid 渲染失败: Parse error on line 7: ... table user { uid in ----------------------^ Expecting 'BLOCK_STOP', 'ATTRIBUTE_WORD', 'ATTRIBUTE_KEY', 'COMMENT', got '{'

2.3 数据库类型说明

数据库用途重要性
TD_OA主数据库,存储所有业务数据极高
TD_OA_ARCHIVE归档数据库,存储历史数据
BUS公交线路查询数据
crscell报表统计数据

三、数据库访问方式

3.1 访问架构

重要安全特性

  • MySQL默认仅允许本地访问(127.0.0.1)
  • 不支持直接远程连接
  • 远程管理需通过Web方式(如phpMyAdmin)

3.2 连接参数

根据db_config.php配置:

参数说明
主机localhost数据库地址
端口3336MySQL监听端口
用户名root默认管理员
数据库TD_OA主数据库名

四、phpMyAdmin安装配置

4.1 安装步骤

第一步:下载程序包

从官方网站下载phpMyAdmin 4.2版本(重要:仅支持4.2及更低版本): 4.2.13.3 · phpMyAdmin

第二步:创建目录

New-Item -ItemType Directory -Path "MYOA\webroot\mysql369"

目录命名建议

  • 使用复杂名称避免被猜测
  • 如:mysql2024admindbmanage123

第三步:解压文件

将下载的程序包解压到mysql369目录下。

第四步:配置phpMyAdmin

复制config.sample.inc.phpconfig.inc.php

Copy-Item "MYOA\webroot\mysql369\config.sample.inc.php" ` "MYOA\webroot\mysql369\config.inc.php"

4.2 配置文件详解

编辑config.inc.php

<?php $cfg['blowfish_secret'] = 'your_secret_key_here'; // 加密密钥 $cfg['Servers'][$i]['auth_type'] = 'http'; // 认证方式 $cfg['Servers'][$i]['host'] = 'localhost'; // 数据库地址 $cfg['Servers'][$i]['port'] = '3336'; // 端口号 $cfg['Servers'][$i]['user'] = 'root'; // 用户名 $cfg['Servers'][$i]['password'] = ''; // 密码(留空在登录时输入) ?>

配置参数说明

参数说明建议值
blowfish_secret加密Cookie等敏感信息随机字符串
auth_type认证方式:http/config/cookiehttp
hostMySQL服务器地址localhost
portMySQL端口3336
user用户名root
password密码留空,登录时输入

认证方式对比

方式安全性使用场景
http推荐使用
cookie需要保持登录状态
config不推荐,密码明文存储

4.3 访问phpMyAdmin

访问地址

http://OA地址/mysql369

登录界面

  • 用户名为:root
  • 密码为MySQL数据库密码
  • 登录后建议切换为中文界面

4.4 常见问题

问题1:版本不兼容

报错:phpMyAdmin 4.2.x 与 OA PHP版本不兼容

解决方案:确保下载的是4.2或更低版本。

问题2:访问被拒绝

报错:Access denied for user 'root'@'localhost'

解决方案

  • 检查用户名和密码是否正确
  • 确认MySQL服务已启动

五、数据库管理操作

5.1 数据库备份

方法1:使用系统自动备份

通达OA提供自动备份功能,备份文件存放在MYOA\bak目录。

方法2:使用phpMyAdmin手动备份

备份建议

  • 定期备份数据库
  • 备份文件存储到安全位置
  • 测试备份文件的可用性

5.2 数据库恢复

使用phpMyAdmin恢复

5.3 数据表操作

查看数据表

-- 查看所有表 SHOW TABLES; -- 查看表结构 DESCRIBE user; -- 查看表状态 SHOW TABLE STATUS LIKE 'user';

常见数据表

表名用途关键字段
user用户信息uid, username, password
dept部门信息dept_id, dept_name, parent_id
role角色信息role_id, role_name
workflow工作流定义flow_id, flow_name
mail邮件信息mail_id, from_uid, to_uid

六、数据库操作最佳实践

6.1 使用TD类进行数据库操作

在二次开发中,应使用OA提供的TD类进行数据库操作,而不是直接使用MySQLi或PDO。

<?php include_once("inc/auth.inc.php"); // 查询数据 $td = new TD(); $result = $td->query("SELECT * FROM user WHERE uid = 1"); $user = $td->fetch_array($result); // 插入数据 $sql = "INSERT INTO my_table (name, value) VALUES ('test', '123')"; $td->query($sql); // 获取自增ID $insert_id = $td->insert_id(); ?>

TD类优势

  • 自动处理数据库连接
  • 提供SQL注入防护
  • 统一的错误处理

6.2 SQL注入防护

不安全示例

// 危险!直接拼接用户输入 $username = $_GET['username']; $sql = "SELECT * FROM user WHERE username = '$username'";

安全示例

// 安全!使用参数化查询 $username = $td->escape($_GET['username']); $sql = "SELECT * FROM user WHERE username = '$username'";

6.3 性能优化

优化建议

优化项说明
索引优化为经常查询的字段添加索引
查询优化避免SELECT *,只查询需要的字段
分页查询使用LIMIT限制返回数据量
缓存机制使用Redis缓存热点数据

七、数据库安全

7.1 安全配置

安全建议

  • 使用强密码
  • 定期更换密码
  • 禁用MySQL远程连接
  • 限制phpMyAdmin访问IP

7.2 敏感数据保护

密码存储

// OA使用MD5加密存储密码 $password = md5($_POST['password']);

注意事项

  • 密码不应明文存储
  • 建议使用更安全的加密算法(如bcrypt)
  • 日志中不应记录敏感信息

八、故障排查

8.1 数据库连接失败

8.2 数据库性能问题

排查步骤

  1. 查看慢查询日志
  2. 分析查询执行计划
  3. 检查索引使用情况
  4. 优化查询语句
-- 查看慢查询日志 SHOW VARIABLES LIKE 'slow_query_log'; -- 查看查询执行计划 EXPLAIN SELECT * FROM user WHERE username = 'admin'; -- 查看索引 SHOW INDEX FROM user;