4.3.4.0 启动报错Docker

【 使用环境 】测试环境
【 OB 】
【 使用版本 】4.3.4.0-100000162024110717
【问题描述】启动报错
【复现路径】按照这个脚本启动,check tenant connectable 打印后,会一直报错ERROR 1045 (42000): Access denied for user ‘root’@‘xxx.xxx.xxx.xxx’ (using password: NO) 打N多行,然后boot failed!
【附件及日志】
`version: ‘3.8’

services:
ocp:
image: oceanbase/oceanbase-ce:4.3.4.0-100000162024110717
ports:
- “2881:2881”
environment:
- MODE=slim
- OB_TENANT_NAME=yl
- OB_TENANT_PASSWORD=yl@123456

根据您提供的信息,启动报错 ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: NO) 表明在尝试连接到 OceanBase 数据库时,由于用户名或密码不正确而导致访问被拒绝。以下是可能的原因和解决方案:

可能的原因

  1. 用户名或密码错误:您在 Docker 启动脚本中配置的用户名或密码可能不正确。
  2. 权限问题:用户 root 可能没有足够的权限来执行某些操作。
  3. 网络问题:客户端与服务器之间的网络连接可能存在问题。

解决方案

  1. 检查用户名和密码

    • 确认 OB_TENANT_NAMEOB_TENANT_PASSWORD 是否正确。您当前的配置如下:
      environment:
        - MODE=slim
        - OB_TENANT_NAME=yl
        - OB_TENANT_PASSWORD=yl@123456
      
    • 确保 yl 用户存在并且密码正确。
  2. 验证用户权限

    • 登录到 OceanBase 数据库,检查 yl 用户的权限。您可以使用以下 SQL 语句:
      SELECT * FROM __all_user WHERE user_name = 'yl';
      
    • 如果用户不存在,您可以创建用户并授予权限:
      CREATE USER 'yl' IDENTIFIED BY 'yl@123456';
      GRANT ALL PRIVILEGES ON *.* TO 'yl'@'%' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
      
  3. 检查网络连接

    • 确保 Docker 容器与主机之间的网络连接正常。您可以使用 ping 命令测试网络连通性:
      ping xxx.xxx.xxx.xxx
      
    • 确保防火墙规则允许从客户端到服务器的连接。
  4. 查看日志文件

    • 查看 Docker 容器的日志文件,以获取更多详细的错误信息。您可以使用以下命令查看日志:
      docker logs <container_id>
      

综合建议

  • 重新启动容器:有时候重新启动 Docker 容器可以解决一些临时性的问题。

    docker-compose down
    docker-compose up -d
    
  • 检查配置文件:确保 Docker 配置文件中没有其他可能导致问题的配置项。

如果您已经尝试了上述步骤但问题仍然存在,建议联系 OceanBase 的技术支持团队以获取进一步的帮助。希望这些建议对您有所帮助!

具体信息可参考以下文档:

  1. ob_cluster_status_check_failed OB 集群状态检测失败
  2. 主机标准化检查项
  3. ob_host_partition_count_over_threshold OB 服务器分区数量超限
  4. 物理 IO 耗时
  5. 物理 IO 次数
  6. 5000 ~ 5999
  7. 10000 ~ 12000
  8. 0001 ~ 3999

去掉OB_TENANT_NAME=yl,启动就可以成功,

具体列一下 的部署步骤 使用哪种方式部署的

感谢您的反馈。根据您的描述,去掉 OB_TENANT_NAME=yl 后启动成功,这表明问题可能与租户名称的配置有关。以下是一些可能的原因和建议:

可能的原因

  1. 租户名称配置错误:指定的租户名称 yl 可能不存在或者配置不正确。
  2. 默认租户:如果没有指定租户名称,OceanBase 可能会使用默认租户(通常是 sysoceanbase),而这些默认租户可能已经存在并且配置正确。

解决方案

  1. 确认租户名称

    • 确认 yl 租户是否已经创建。您可以登录到 OceanBase 数据库并运行以下 SQL 语句来检查租户列表:
      SHOW TENANTS;
      
    • 如果 yl 租户不存在,您可以创建它:
      CREATE TENANT yl;
      
  2. 使用默认租户

    • 如果您不需要特定的租户名称,可以继续使用默认租户。默认情况下,OceanBase 会使用 sysoceanbase 租户。
  3. 配置文件调整

    • 如果您确实需要使用 yl 租户,确保在 Docker 启动脚本中正确配置租户名称和密码:
      environment:
        - MODE=slim
        - OB_TENANT_NAME=yl
        - OB_TENANT_PASSWORD=yl@123456
      

具体步骤

  1. 检查租户列表

    • 登录到 OceanBase 数据库:
      obclient -h127.0.0.1 -P2881 -uroot -pyour_password
      
    • 运行以下 SQL 语句检查租户列表:
      SHOW TENANTS;
      
  2. 创建租户

    • 如果 yl 租户不存在,创建它:
      CREATE TENANT yl;
      
  3. 配置 Docker 启动脚本

    • 确保 Docker 启动脚本中正确配置租户名称和密码:
      version: '3.8'
      
      services:
        ocp:
          image: oceanbase/oceanbase-ce:4.3.4.0-100000162024110717
          ports:
            - "2881:2881"
          environment:
            - MODE=slim
            - OB_TENANT_NAME=yl
            - OB_TENANT_PASSWORD=yl@123456
      
  4. 重新启动容器

    • 重新启动 Docker 容器以应用新的配置:
      docker-compose down
      docker-compose up -d
      

总结

通过以上步骤,您可以确认租户名称是否正确,并确保 Docker 启动脚本中的配置正确无误。如果问题仍然存在,建议查看 Docker 容器的日志文件以获取更多详细的错误信息。

希望这些建议对您有所帮助!如果有其他问题,请随时联系 OceanBase 的技术支持团队。

详情请参考:

  1. 900.delete-a-zone.md
  2. 300.adjust-unit-number.md
  3. 500.merge-and-splitting-resource-pools.md
  4. 100.view-resource-pools.md
  5. 200.assign-a-resource-pool-to-a-tenant.md
  6. 600.delete-resource-pool.md
  7. 100.view-resource-unit-configuration.md
  8. 200.modify-the-configuration-of-a-resource-unit.md
  9. 1500.delete-resource-specification.md
  10. 100.resource-isolation-overview.md

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

version: ‘3.8’

services:
ocp:
image: oceanbase/oceanbase-ce:4.3.4.0-100000162024110717
ports:
- “2881:2881”
environment:
#- OB_TENANT_NAME=yl
- MODE=slim
- OB_TENANT_PASSWORD=yl@123456

docker 部署的,添加这个属性后,就报错了

如果要指定租户名的话 MODE 不能设置成 slim,可以尝试将 MODE 设置成 mini