官方docker镜像使用相关问题

【 使用环境 】测试环境
【 OB 】
【 使用版本 】oceanbase-ce:4.2.1_bp3
【问题描述】使用官方镜像docker容器,不清楚怎么把命令传过去。
比如 docker run 设置了root密码,使用 docker exec -it oceanbase-ce ob-mysql root 登陆数据库,
这个时候需要docker exec -it oceanbase-ce ob-mysql root OB_ROOT_PASSWORD=XXX,才能把密码传过去,而不是-pxxx。
1.请问 OB_ROOT_PASSWORD=XXX怎么生效的?从控制台打印来看这里并没有使用PASSCMD变量,但是达成了-pxxx的效果
2. 请问其他obclient -h127.1 -uroot@obmysql -A -Doceanbase -P2881后接的命令怎么传?即源码中PASSCMD怎么赋值?
【ob-mysql脚本源码】

#!/bin/bash
CWD=$(cd `dirname $0`;pwd)
cd "${CWD}"
source _env

case "$1" in
  sys)
    LOGIN_USER="root@sys"
    DB="oceanbase"
    ;;
  root)
    DB="oceanbase"
    LOGIN_USER="root@${OB_TENANT_NAME}"
    ;;
  *)
    DB="test"
    LOGIN_USER="test@${OB_TENANT_NAME}"
    ;;
esac

echo "login as ${LOGIN_USER}"
CMD="obclient -h127.1 -u${LOGIN_USER} -A -D${DB} -P${OB_MYSQL_PORT} ${PASSCMD}"
echo "Command is: ${CMD}"
${CMD}

你的怀疑是对的,这个是bug,有密码的时候是有问题的

你这里应该是OB_ROOT_PASSWORD就没设置上,密码还是空的

1 个赞

应该是 OB_ROOT_PASSWORD 会自动传到登录连接串中 -p,实际登录是obclient …这个命令

目前的BUG导致系统租户有密码,无法通过这个访问