数据初始化
本页承接数据库与中间件部署,适用于 首次部署的新业务库。执行前,MySQL、Redis 和 Neo4j 应已启动并通过连接验证。
一、初始化前检查
准备与后端 JAR、前端资源相同发布版本的 qOntology 源码或部署包。本页使用以下两个文件,名称中的 show 不代表可以跳过全部业务表:
docker/qOntology/mysql/init/
├── init-system.sql # 系统管理、权限及相关基础表
└── init-show.sql # 本体、应用、模型等业务表与初始数据当前核对版本中,两份脚本都创建并使用 qontology 数据库,各包含 32 张表,表名没有重叠。后续版本应以对应发布包为准,不把 64 张表当作所有版本的固定要求。
不可在已有业务库上直接重放
两份 SQL 都包含 DROP TABLE IF EXISTS。重新导入会删除并重建对应表,不能用于修复一般启动错误或执行版本升级。若数据库已存在,先确认是否为本次部署准备的空库;已有业务数据时停止首次初始化流程。
在服务器的源码根目录执行,只检查文件存在,不执行发布或重置脚本:
# 进入同版本源码目录,确认两份初始化脚本存在
cd /实际路径/qOntology
test -f docker/qOntology/mysql/init/init-system.sql
test -f docker/qOntology/mysql/init/init-show.sql
# 登录 MySQL,先检查目标业务库是否为空
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p进入 MySQL 后检查:
SHOW DATABASES LIKE 'qontology';
SELECT COUNT(*) AS existing_tables
FROM information_schema.tables
WHERE table_schema = 'qontology';
EXIT;新环境应尚无业务表。若已有表,不继续执行下方导入命令。
二、初始化 MySQL 业务库
2.1、按顺序导入
继续在源码根目录执行,每条命令按提示输入 MySQL 管理员密码。第一条成功后再执行第二条;不要加 --force 忽略错误:
# 仅对首次部署的空库执行:先导入系统表和基础数据
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p \
< docker/qOntology/mysql/init/init-system.sql# 确认系统脚本导入成功后,再导入业务表和初始数据
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p \
< docker/qOntology/mysql/init/init-show.sql脚本内有 CREATE DATABASE 和 USE qontology,无需提前手工选择业务库。不要再叠加导入 latest初始化.sql、历史版本初始化 SQL 或升级目录中的全部文件。
2.2、创建应用数据库账号
使用管理员进入交互终端,避免将业务密码写进 Shell 命令参数:
# 登录管理员终端,并禁止本次会话保存 MySQL 命令历史
MYSQL_HISTFILE=/dev/null /opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p替换密码后执行。该账号仅授权本机访问 qontology 库,不授予全局管理权限:
CREATE USER 'qontology'@'127.0.0.1' IDENTIFIED BY '<MySQL应用密码>';
GRANT ALL PRIVILEGES ON qontology.* TO 'qontology'@'127.0.0.1';
SHOW GRANTS FOR 'qontology'@'127.0.0.1';
EXIT;账号已存在时先核对来源,不通过删用户来重复执行此步骤。后续 API 配置使用 127.0.0.1:3306、数据库名 qontology、用户名 qontology 和这里设置的密码。
2.3、验证表和账号
用应用账号通过 TCP 登录:
/opt/mysql57/bin/mysql --protocol=TCP -h127.0.0.1 -P3306 -uqontology -p qontologySHOW TABLES;
SELECT COUNT(*) AS system_users FROM system_user;
SELECT COUNT(*) AS system_roles FROM system_role;
SELECT COUNT(*) AS ontology_tables
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name LIKE 'om\_%';
EXIT;确认系统表和业务表均存在、查询没有权限或编码错误。管理员登录账号与初始口令以同版本发布说明或交付记录为准,不能从数据库密码推断;导入脚本中的模型、连接或示例数据也应按实际环境核对后再启用。
三、Neo4j 初始化与验证
3.1、默认使用新建空库
上一页首次启动 Neo4j 后会建立默认数据库,本页不额外导入未经确认的图数据。使用上一页设置的认证信息登录:
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
/opt/neo4j/bin/cypher-shell -a bolt://127.0.0.1:7687 -u neo4jRETURN 1 AS connection_ok;
SHOW DATABASES;
MATCH (n) RETURN count(n) AS node_count;确认默认 neo4j 数据库可用。新空库节点数量通常为 0。输入 :exit 退出。关系库内的演示记录不会自动生成对应图节点;使用空图时,不把演示图谱可见作为初始化成功条件。
3.2、可选示例图数据
源码中的 sql/neo4j/data/、docker/qOntology/neo4j-init/data/ 是数据目录,并非可直接传给 neo4j-admin load 的 .dump 文件。本系列默认不覆盖新库,也不直接复制其中的 system 数据库和认证文件。
如需要恢复演示图谱,应取得与该发布版本匹配的受支持导出包及恢复说明,确认 Neo4j 版本、数据库名、停机要求和对应关系库数据。已有图数据先备份,再按该导出格式的恢复步骤操作;没有明确导出包时保留空库,不编造导入路径。
四、结果检查与失败处理
| 检查项 | 完成标准 |
|---|---|
| 系统表和业务表 | 两份 SQL 均成功执行,关键表可查询 |
| 应用账号 | 通过 127.0.0.1:3306 登录并查询 qontology |
| Neo4j | 默认数据库可用,RETURN 1 成功 |
| 版本一致性 | SQL、配置、JAR 和前端产物属于同一发布版本 |
SQL 发生错误时记录文件、行号和错误信息,不附带密码或完整业务数据。检查 MySQL 版本、文件完整性、字符集与权限后处理;不要把重复执行全部初始化脚本作为通用修复方式。已有部署的升级应使用对应版本升级脚本并核对执行顺序。
下一步:应用构建。已有同版本构建产物时,可直接进入 qOntology 服务部署。
