
数据库是通达OA的核心数据存储层,掌握数据库管理技能对于二次开发和系统维护至关重要。本文将详细介绍通达OA的数据库架构、phpMyAdmin的安装配置,以及数据库操作的最佳实践。
通达OA的数据库文件存放在 MYOA\data5 目录下:
MYOA\data5
├── BUS/ # 公交线路查询数据库
├── TD_OA/ # 通达OA主数据库(核心)
├── crscell/ # 报表数据库
├── MySQL/ # MySQL系统数据库
├── TD_OA_ARCHIVE/ # 归档数据库
├── ib_logfile0 # InnoDB日志文件
├── ib_logfile1 # InnoDB日志文件
└── ibdata1 # InnoDB共享表空间Mermaid 渲染失败: Parse error on line 7:
... table user { uid in
----------------------^
Expecting 'BLOCK_STOP', 'ATTRIBUTE_WORD', 'ATTRIBUTE_KEY', 'COMMENT', got '{'数据库 | 用途 | 重要性 |
|---|---|---|
TD_OA | 主数据库,存储所有业务数据 | 极高 |
TD_OA_ARCHIVE | 归档数据库,存储历史数据 | 高 |
BUS | 公交线路查询数据 | 中 |
crscell | 报表统计数据 | 中 |

重要安全特性:
根据 db_config.php 配置:
参数 | 值 | 说明 |
|---|---|---|
主机 | localhost | 数据库地址 |
端口 | 3336 | MySQL监听端口 |
用户名 | root | 默认管理员 |
数据库 | TD_OA | 主数据库名 |
第一步:下载程序包
从官方网站下载phpMyAdmin 4.2版本(重要:仅支持4.2及更低版本): https://www.phpmyadmin.net/files/4.2.13.3/
第二步:创建目录
New-Item -ItemType Directory -Path "MYOA\webroot\mysql369"目录命名建议:
mysql2024admin、dbmanage123第三步:解压文件
将下载的程序包解压到 mysql369 目录下。
第四步:配置phpMyAdmin
复制 config.sample.inc.php 为 config.inc.php:
Copy-Item "MYOA\webroot\mysql369\config.sample.inc.php" `
"MYOA\webroot\mysql369\config.inc.php"编辑 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/cookie | http |
host | MySQL服务器地址 | localhost |
port | MySQL端口 | 3336 |
user | 用户名 | root |
password | 密码 | 留空,登录时输入 |
认证方式对比:

方式 | 安全性 | 使用场景 |
|---|---|---|
http | 高 | 推荐使用 |
cookie | 中 | 需要保持登录状态 |
config | 低 | 不推荐,密码明文存储 |
访问地址:
http://OA地址/mysql369登录界面:
root问题1:版本不兼容
报错:phpMyAdmin 4.2.x 与 OA PHP版本不兼容解决方案:确保下载的是4.2或更低版本。
问题2:访问被拒绝
报错:Access denied for user 'root'@'localhost'解决方案:
方法1:使用系统自动备份
通达OA提供自动备份功能,备份文件存放在 MYOA\bak 目录。
方法2:使用phpMyAdmin手动备份

备份建议:
使用phpMyAdmin恢复:

查看数据表:
-- 查看所有表
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_id, from_uid, to_uid |
在二次开发中,应使用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类优势:
不安全示例:
// 危险!直接拼接用户输入
$username = $_GET['username'];
$sql = "SELECT * FROM user WHERE username = '$username'";安全示例:
// 安全!使用参数化查询
$username = $td->escape($_GET['username']);
$sql = "SELECT * FROM user WHERE username = '$username'";
优化建议:
优化项 | 说明 |
|---|---|
索引优化 | 为经常查询的字段添加索引 |
查询优化 | 避免SELECT *,只查询需要的字段 |
分页查询 | 使用LIMIT限制返回数据量 |
缓存机制 | 使用Redis缓存热点数据 |

安全建议:
密码存储:
// OA使用MD5加密存储密码
$password = md5($_POST['password']);注意事项:

排查步骤:
-- 查看慢查询日志
SHOW VARIABLES LIKE 'slow_query_log';
-- 查看查询执行计划
EXPLAIN SELECT * FROM user WHERE username = 'admin';
-- 查看索引
SHOW INDEX FROM user;原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。