obd 白屏部署ocp报错

$ obd --version
OceanBase Deploy: 4.5.0
REVISION: b2ed7acb6e1eec56b796829cdd2c2e2e4dc3ee4a
BUILD_BRANCH: HEAD
BUILD_TIME: Jul 08 2026 14:56:25OURCE
Copyright (C) 2025 OceanBase
License Apache 2.0: Apache version 2 or later <https://www.apache.org/licenses/LICENSE-2.0>.
This is free software: you are free to change and redi

+-------------------------------------------------------------------------------------------------+
|                                             Packages                                            |
+---------------+-------------+------------------------+------------------------------------------+
| Repository    | Version/Tag | Release                | Hash                                     |
+---------------+-------------+------------------------+------------------------------------------+
| oceanbase-ce  | 4.3.5.3     | 103020012025120120.el8 | 404db9c27f249d8a782b6fdaefaf4c73f5e5d25d |
| obproxy-ce    | 4.3.6.1     | 2.el8                  | ce7f4ebf7170fd7f0d3ebbaa31904c528a42a69a |
| ocp-server-ce | 4.4.2       | 20260721101640.el7     | 02d7836c018a22ef1e342dd7d19bfec0d743a8d2 |
+---------------+-------------+------------------------+------------------------------------------+
2026-10-20 15:02:31,341 INFO dispatch (request_response_log.py:38) [c7f3922fc8a74d12b177554b5f727672] app send response, code: 200
2026-10-20 15:02:31,342 INFO dispatch (request_response_log.py:38) [b8256ef625c04635a0117247259c1b35] app send response, code: 200
2026-10-20 15:02:32,648 WARNING _do_install (ocp_handler.py:832) [None] failed to start component: ocp-server-ce
2026-10-20 15:02:32,648 INFO _do_install (ocp_handler.py:835) [None] end start ocp-server-ce
2026-10-20 15:02:32,651 ERROR wrapper (task.py:135) [ef1c882638834dbf801bd3a4339939f4] task 1 got exception
Traceback (most recent call last):
  File "service/common/task.py", line 121, in wrapper
  File "concurrent/futures/_base.py", line 456, in result
  File "concurrent/futures/_base.py", line 401, in __get_result
  File "concurrent/futures/thread.py", line 58, in run
  File "service/handler/ocp_handler.py", line 840, in _do_install
  File "_stdio.py", line 1224, in wrapper
  File "_stdio.py", line 1185, in func_wrapper
  File "tool.py", line 992, in __init__
  File "tool.py", line 1026, in _connect
  File "pymysql/connections.py", line 361, in __init__
  File "pymysql/connections.py", line 669, in connect
  File "pymysql/connections.py", line 957, in _request_authentication
  File "pymysql/connections.py", line 775, in _read_packet
  File "pymysql/protocol.py", line 219, in raise_for_error
  File "pymysql/err.py", line 150, in raise_mysql_exception
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)")
2026-10-20 15:02:32,654 INFO wrapper (task.py:138) [ef1c882638834dbf801bd3a4339939f4] task 1 finished failed

报错如下:
pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘xxx.xxx.xxx.xxx’ (using password: YES)”)

根据obd中的日志,各种export后,通过手工启动:

java -Dfile.encoding=UTF-8 -Docp.host.ip=10.xx.xx.xx -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -Xms8g -Xmx8g -jar /home/admin/ocp/lib/ocp-server.jar --bootstrap –progress-log=/home/admin/ocp/log/bootstrap.log

报连接ocp_meta密码错误,如下:

14:42:47.767 [ForkJoinPool.commonPool-worker-31] INFO com.oceanbase.ocp.bootstrap.core.config.DataConfigLoader -- load config from ob/ob_parameter_info.yaml
14:42:48.757 [main] INFO com.oceanbase.ocp.bootstrap.hooks.OCPInitializer -- run initialize. action: UNKNOWN
14:42:49.070 [main] ERROR com.alibaba.druid.pool.DruidDataSource -- init datasource error, url: jdbc:oceanbase://101.12.83.3:2883/meta_database?useUnicode=true&characterEncoding=UTF8&encloseParamInParentheses=false&connectTimeout=10000&socketTimeout=28800000&rewriteBatchedStatements=true&useServerPrepStmts=false&compatibleMysqlVersion=8
java.sql.SQLSyntaxErrorException: Could not connect to 101.12.83.3:2883 : (conn=1993081068) Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:110)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:235)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1740)
        at com.oceanbase.jdbc.internal.util.Utils.retrieveProxy(Utils.java:1471)
        at com.oceanbase.jdbc.OceanBaseConnection.newConnection(OceanBaseConnection.java:416)
        at com.oceanbase.jdbc.Driver.connect(Driver.java:93)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1682)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1803)
        at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:595)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1147)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1139)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:80)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils.query(SQLUtils.java:86)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils.queryRows(SQLUtils.java:108)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils$1.query(SQLUtils.java:55)
        at com.oceanbase.ocp.bootstrap.db.ConfigPropertyManagerImpl.getProperty(ConfigPropertyManagerImpl.java:27)
        at com.oceanbase.ocp.bootstrap.db.ConfigPropertyManager.ocpVersion(ConfigPropertyManager.java:26)
        at com.oceanbase.ocp.bootstrap.hooks.OCPInitializer.oldOcpVersion(OCPInitializer.java:236)
        at com.oceanbase.ocp.bootstrap.hooks.OCPInitializer.initialize(OCPInitializer.java:185)
        at com.oceanbase.ocp.bootstrap.spring.BootstrapRunListener.<init>(BootstrapRunListener.java:60)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:376)
        at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:224)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:202)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:158)
        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:466)
        at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:450)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:309)
        at com.oceanbase.ocp.OcpCeServerApplication.main(OcpCeServerApplication.java:25)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
        at org.springframework.boot.loader.launch.PropertiesLauncher.main(PropertiesLauncher.java:580)
Caused by: java.sql.SQLSyntaxErrorException: (conn=1993081068) Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:110)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:230)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:808)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:603)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1735)
        ... 37 common frames omitted
14:42:49.091 [main] ERROR com.alibaba.druid.pool.DruidDataSource -- {dataSource-1} init error
java.sql.SQLSyntaxErrorException: Could not connect to 101.12.83.3:2883 : (conn=1993081068) Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:110)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:235)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1740)
        at com.oceanbase.jdbc.internal.util.Utils.retrieveProxy(Utils.java:1471)
        at com.oceanbase.jdbc.OceanBaseConnection.newConnection(OceanBaseConnection.java:416)
        at com.oceanbase.jdbc.Driver.connect(Driver.java:93)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1682)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1803)
        at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:595)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1147)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1139)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:80)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils.query(SQLUtils.java:86)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils.queryRows(SQLUtils.java:108)
        at com.oceanbase.ocp.bootstrap.util.SQLUtils$1.query(SQLUtils.java:55)
        at com.oceanbase.ocp.bootstrap.db.ConfigPropertyManagerImpl.getProperty(ConfigPropertyManagerImpl.java:27)
        at com.oceanbase.ocp.bootstrap.db.ConfigPropertyManager.ocpVersion(ConfigPropertyManager.java:26)
        at com.oceanbase.ocp.bootstrap.hooks.OCPInitializer.oldOcpVersion(OCPInitializer.java:236)
        at com.oceanbase.ocp.bootstrap.hooks.OCPInitializer.initialize(OCPInitializer.java:185)
        at com.oceanbase.ocp.bootstrap.spring.BootstrapRunListener.<init>(BootstrapRunListener.java:60)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:376)
        at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:224)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:202)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:158)
        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:466)
        at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:450)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:309)
        at com.oceanbase.ocp.OcpCeServerApplication.main(OcpCeServerApplication.java:25)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
        at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
        at org.springframework.boot.loader.launch.PropertiesLauncher.main(PropertiesLauncher.java:580)
Caused by: java.sql.SQLSyntaxErrorException: (conn=1993081068) Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:110)
        at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:230)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:808)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:603)
        at com.oceanbase.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1735)

在ocp主机上连ocp_meta租户的meta_database数据库,手工又是可以连接的,如下:

admin@obd-ocp:~/.obd/plugins/ocp-server/4.4.0$ obclient -h101.12.83.3 -P2883 -p -uroot@ocp_meta  -Dmeta_database -A
Enter password: 
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 376701042
Server version: OceanBase_CE 4.3.5.3 (r103020012025120120-de5425fc0077d196353e20b011045b8c2d7d5514) (Built Dec  1 2025 20:49:25)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient(root@ocp_meta)[meta_database]> 

cat ~/.obd/cluster/myocp/config.yaml 中global.ocp_meta_password 就是上面的连接用到的密码

你把完整的obd.log日志发一下 你手工通过命令连接的 JDBC_USERNAME/JDBC_PASSWORD 与手工连通的那套不一致吧?没有看到命令的有用户和密码信息

命令应该是这样的吧 看着你哪个不太对呀

cd /home/admin/ocp
export PATH=/home/admin/ocp/jre/bin:$PATH

– 先创建日志目录
mkdir -p /home/admin/logs /home/admin/ocp/log

–设置 MetaDB 连接(密码替换为实际值)
export JDBC_URL='jdbc:oceanbase://9.9.107.101:2883/meta_database'
export JDBC_USERNAME='root@ocp_meta'
export JDBC_PASSWORD='<meta租户root密码>'
export JDBC_PUBLIC_KEY=''
export OCP_INITIAL_ADMIN_PASSWORD='<OCP管理员密码>'

export OCP_BOOTSTRAP_WITH_PROPERTY='server.port:8080
logging.file.name:/home/admin/logs/ocp-server.log
ocp.monitordb.database:monitor_database
ocp.monitordb.host:9.9.107.101
ocp.monitordb.password:<monitor密码>
ocp.monitordb.port:2883
ocp.monitordb.username:root@ocp_monitor
obsdk.ob.connection.mode:direct'

java -Dfile.encoding=UTF-8 -Docp.host.ip=9.9.107.101
-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError
-Xms8g -Xmx8g
-jar /home/admin/ocp/lib/ocp-server.jar --bootstrap
–progress-log=/home/admin/ocp/log/bootstrap.log

不好思意,搞错!少了个export 命令
刚才根据obd的日志,进行各种export后, 手工启动ocp java进程是正常的。

obd启动有问题 应该就是配置文件的密码 估计有问题导致的

请问哪里的问题? obd白屏部署ocp,理论连接metadb的配置都不需要人工干预的,现实就是报用户密码错误。

你看看你的obd yaml文件 obd cluster list --集群名
obd cluster edit-config [集群名] 保存到文本里 发一下 看看是否配置错误 自己对比一下密码

直接copy 配置的ocp_meta_password/ocp_monitor_password密码,这里手工用obclient连接,就完全正常。

你先把进程结束掉 重新使用obd启动 把完整的日志发一下 看看到底是哪里的问题