1. 创建安装用户(通过sudo)
# 创建kingbase用户及同名用户组(需sudo)
sudo useradd -m kingbase
# 设置kingbase用户密码(需sudo)
sudo passwd kingbase
2. 创建安装目录并授权
# 创建默认安装目录(需sudo)
sudo mkdir -p /opt/Kingbase/ES/V9
# 将目录所有权赋予kingbase用户(需sudo)
sudo chown -R kingbase:kingbase /opt/Kingbase/ES/V9
3. 挂载ISO安装包
# 创建挂载点目录(需sudo,建议放在公共路径)
sudo mkdir /mnt/kingbase_iso
# 挂载ISO文件(需sudo,假设ISO在/home/tytdc/Downloads下)
sudo mount -o loop,ro /home/tytdc/Downloads/KingbaseES_V009R001C002B0014_Lin64_install.iso /mnt/kingbase_iso
# 验证挂载
ls /mnt/kingbase_iso # 应看到安装文件
4. 切换至kingbase用户执行安装
# 允许tytdc用户启动图形程序(需sudo)
xhost +SI:localuser:kingbase
# 切换到kingbase用户(继承当前图形环境)
sudo -u kingbase -i
# 设置中文环境(在kingbase用户shell中执行)
export LANG=zh_CN.UTF-8
# 进入挂载目录
cd /mnt/kingbase_iso
# 启动图形安装程序
sh setup.sh
5. 图形界面关键配置项
-
安装路径:保持默认
/opt/Kingbase/ES/V9
-
数据目录:建议设为
/opt/Kingbase/ES/V9/data
(安装程序自动创建) -
服务账户:使用
kingbase
用户(已提前创建) -
端口设置:默认
54321
(若冲突改为如65432
) -
管理员密码:为数据库用户
system
设置密码(如:System@123)
6. 安装后配置
# 退出kingbase用户(返回tytdc用户)
exit
# 将数据库命令加入PATH(在tytdc用户下操作)
echo 'export PATH="/opt/Kingbase/ES/V9/Server/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
7. 启动数据库服务
# 使用kingbase用户启动(需sudo提权)
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data start
# 验证运行状态
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data status
8. 连接验证
# 使用ksql客户端连接
sudo -u kingbase ksql -U system -d test -p 54321
# 输入密码后应看到SQL提示符
关键问题解决方案
1.挂载问题
安装完成后卸载ISO:
sudo umount /mnt/kingbase_iso
-
若报
mount: block device is write-protected
属正常现象,不影响安装
2.权限不足错误
检查目录所有权:
sudo chown -R kingbase:kingbase /opt/Kingbase/ES/V9
如遇问题1::ksql
命令找不到
原因:环境变量未正确配置到 sudo
环境
# 方法1:使用完整路径连接(推荐)
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/ksql -U system -d test -p 54321
# 方法2:将PATH永久添加到sudo安全路径(需sudo权限)
sudo sh -c 'echo "Defaults secure_path=\"/opt/Kingbase/ES/V9/Server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"" >> /etc/sudoers'
问题2:could not change directory
警告
原因:kingbase
用户无权访问 tytdc
的家目录(属正常现象,不影响服务)
解决方案:
# 忽略此警告(无害)或为kingbase用户设置工作目录
sudo -u kingbase sh -c 'cd /tmp && /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data status'
完整验证步骤
1.检查服务状态:
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data status
-
确认输出包含
server is running
2.连接数据库:
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/ksql -U system -W -p 54321
-
输入密码后应看到
SQL>
提示符
3.执行测试命令:
SELECT version();
\q -- 退出
开机自启设置:
1. 检查当前服务状态
# 查看数据库是否正在运行
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data status
# 检查是否已配置系统服务(麒麟v10通常使用systemd)
sudo systemctl list-unit-files | grep kingbase
-
如果输出包含
kingbase.service
或类似服务名,说明已配置为系统服务。 -
若无输出,则需要手动配置。
2. 配置开机自启(若未设置)
① 创建服务文件:
sudo tee /etc/systemd/system/kingbase.service <<'EOF'
[Unit]
Description=KingbaseES Database Server
After=network.target
[Service]
Type=simple
User=kingbase
Group=kingbase
ExecStart=/opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data start
ExecStop=/opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
② 启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable kingbase # 启用开机自启
sudo systemctl start kingbase # 立即启动
sudo systemctl status kingbase # 验证状态
3. 验证开机自启
# 重启系统后检查服务状态
sudo systemctl status kingbase
# 或直接检查进程
ps -ef | grep kingbase
4. 常见问题处理
权限错误
确保数据目录属主为 kingbase
:
sudo chown -R kingbase:kingbase /opt/Kingbase/ES/V9/data
如果systemd 服务启动失败。是由于 服务配置与现有进程冲突 导致的。以下是完整解决方案:
步骤1:停止现有进程
# 强制停止当前运行的数据库
sudo -u kingbase /opt/Kingbase/ES/V9/Server/bin/sys_ctl -D /opt/Kingbase/ES/V9/data stop
# 确认进程已退出
ps -ef | grep kingbase
步骤2:修复服务配置文件
sudo tee /etc/systemd/system/kingbase.service <<'EOF'
[Unit]
Description=KingbaseES Database Server
After=network.target
[Service]
Type=simple # 修改为simple避免进程检测问题
User=kingbase
Group=kingbase
ExecStart=/opt/Kingbase/ES/V9/Server/bin/kingbase -D /opt/Kingbase/ES/V9/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
Restart=on-failure
TimeoutSec=300
[Install]
WantedBy=multi-user.target
EOF
步骤3:重新加载并启动服务
sudo systemctl daemon-reload
sudo systemctl restart kingbase
sudo systemctl status kingbase # 应显示"active (running)"
步骤4:验证开机自启
# 模拟重启触发
sudo systemctl reboot
# 或手动重启后检查
sudo systemctl status kingbase