问题描述

在麒麟操作系统上以命令行方式安装 KingbaseES 数据库时,执行 ./setup.sh 后报错:严重: java.lang.RuntimeException: java.io.IOException: 没有那个文件或目录。

系统已预先安装 Java 环境,排除 Java 缺失导致的问题。

排查过程

确认 Java 环境正常

分别使用 root 用户和 kingbase 用户执行以下命令,验证 Java 可正常调用:

cd /mnt
java -jar ./setup/installer.jar

两个用户下 Java 均可正常启动,说明 Java 环境无问题,报错与 Java 本身无关。

检查用户家目录权限

根据 KingbaseES 安装要求,kingbase 用户必须对其家目录/tmp 目录拥有完整的读写权限。

ls -la /home/kingbase
# 输出显示属主和属组均为 root,而非 kingbase

问题原因

  • 使用 useradd kingbase 创建用户时,可能因 -M 参数或系统模板配置导致系统未能自动生成 /home/kingbase 家目录。
  • 管理员手动执行 mkdir -p /home/kingbase 创建了该目录。目录属主为 root,而非 kingbase
  • 随后使用 usermod -d /home/kingbase kingbase 将家目录指向该路径。仅修改了 /etc/passwd 中的路径,未修正目录权限
  • 手动创建的目录属主默认为 root,并未自动变更为 kingbase,执行 ./setup.sh导致安装程序因权限不足而报错IOException。

解决办法

/home/kingbase 目录的属主和权限修改为正确的值:

su - root
chown -R kingbase:kingbase /home/kingbase
chmod -R 775 /home/kingbase

修改完成后,切换到 kingbase 用户重新执行安装:

su - kingbase
cd /mnt
./setup.sh

安装程序正常运行,问题解决。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐