问题描述
在麒麟操作系统上以命令行方式安装 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安装程序正常运行,问题解决。