obd配置yaml文件中的租户和密码信息

os:ubuntu 2204
obd:2.7
observer:4.3.0.1
obproxy:4.2.3

用obd黑屏部署两个组件,分别是oceanbase-ce和obproxy-ce,部分配置如下:
metadb.yaml

     ........
    ocp_meta_tenant:
      tenant_name: ocp_meta
      max_cpu: 2.0
      memory_size: 4G
      ocp_meta_username: root # User to use under ocp meta tenant
      ocp_meta_password: ocp_meta # Password used to connect to ocp meta tenant
      ocp_meta_db: meta_database # Database used to store ocp meta data
    # OCP monitor tenant definition, including tenant name, cpu and memory
    ocp_monitor_tenant:
      tenant_name: ocp_monitor
      max_cpu: 2.0
      memory_size: 4G
      ocp_monitor_username: root # User to use under ocp monitor tenant
      ocp_monitor_password: ocp_monitor # Password used to connect to ocp meta tenant
      ocp_monitor_db: monitor_database # Database used to store ocp meta data
obproxy-ce:
  # Set dependent components for the component.
  # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  depends:
    - oceanbase-ce
  servers:
    - 10.xx.xx.155
........

10.xx.xx.155 是observer主机也是obproxy实例

但是用root@ocp_meta用户登录obproxy报错:

admin@ubuntu:~$ mysql -uroot@ocp_meta -h10.xx.xx.155 -P2883 -pocp_meta
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
admin@ubuntu:~$                                                       
admin@ubuntu:~$ 

用root@ocp_meta用户登录observer报错:

admin@ubuntu:~$ 
admin@ubuntu:~$ mysql -uroot@ocp_meta -h10.xx.xx.155 -P2881 -pocp_meta
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
admin@ubuntu:~$ 
admin@ubuntu:~$ 

root@sys用户登录obproxy就正常,如下:


mysql> quit
Bye
admin@ubuntu:~$ mysql -uroot@sys -h10.xx.xx.155 -P2883 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1181483490
Server version: 5.6.25 OceanBase_CE 4.3.0.1 (r100000242024032211-0193a343bc60b4699ec47792c3fc4ce166a182f9) (Built Mar 22 2024 13:07:59)

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> 

为什么部署yaml文件配置的root@ocp_meta用户的密码无法登录?

用root@sys用户登录:

mysql> select tenant_name from dba_ob_tenants;
+-------------+
| tenant_name |
+-------------+
| sys         |
| META$1002   |
| ocp_meta    |
| META$1004   |
| ocp_monitor |
+-------------+
5 rows in set (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ocs                |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
8 rows in set (0.01 sec)


然后切换到ocp_meta租户,如下:

mysql> alter system change tenant ocp_meta;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oceanbase          |
| ocp_express        |
| test               |
+--------------------+
5 rows in set (0.01 sec)

查看当前租户,如下:

mysql> SELECT * FROM DBA_OB_TENANTS \G
*************************** 1. row ***************************
                 TENANT_ID: 1002
               TENANT_NAME: ocp_meta
               TENANT_TYPE: USER
               CREATE_TIME: 2024-06-15 15:50:34.415594
               MODIFY_TIME: 2024-06-15 15:51:09.881584
              PRIMARY_ZONE: RANDOM
                  LOCALITY: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
         PREVIOUS_LOCALITY: NULL
        COMPATIBILITY_MODE: MYSQL
                    STATUS: NORMAL
             IN_RECYCLEBIN: NO
                    LOCKED: NO
               TENANT_ROLE: PRIMARY
         SWITCHOVER_STATUS: NORMAL
          SWITCHOVER_EPOCH: 0
                  SYNC_SCN: 1718450625000599323
            REPLAYABLE_SCN: 1718450625000599323
              READABLE_SCN: 1718450625000599323
        RECOVERY_UNTIL_SCN: 4611686018427387903
                  LOG_MODE: NOARCHIVELOG
ARBITRATION_SERVICE_STATUS: DISABLED
                  UNIT_NUM: 1
                COMPATIBLE: 4.3.0.1
                 MAX_LS_ID: 1003
1 row in set (0.01 sec)

查看当前用户,如下:

mysql> select tenant_id,user_id,user_name,passwd from __all_user ;
+-----------+---------+-----------+-------------------------------------------+
| tenant_id | user_id | user_name | passwd                                    |
+-----------+---------+-----------+-------------------------------------------+
|         0 |  200001 | root      | *252b5ec627fa40a7da9c7359ed16b7dec110dfda |
|         0 |  500003 | meta      | *252b5ec627fa40a7da9c7359ed16b7dec110dfda |
+-----------+---------+-----------+-------------------------------------------+

问题:
1、发现root@ocp_meta用户下没有meta_database,
2、多了一个ocp_express数据库,这个ocp_express并数据库没有显示创建
3、没有ocp_meta用户,反而多了一个meta用户。

感觉抬太奇怪了!~~~~~

是不是可以这样说,在obd 部署时,yaml文件中创建租户是不是很不靠谱?!!!*
或者说只会创建默认ocp_meta租户和meta用户?

这是obd部署日志,明显创建了ocp_tenant ocp_monitor租户。
image

切换到ocp_monitor租户,也是一样的问题。

mysql> alter system change tenant ocp_monitor;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oceanbase          |
| ocp_monitor        |
| test               |
+--------------------+
5 rows in set (0.00 sec)


mysql> select tenant_id,user_id,user_name,passwd from __all_user ;
+-----------+---------+-----------+-------------------------------------------+
| tenant_id | user_id | user_name | passwd                                    |
+-----------+---------+-----------+-------------------------------------------+
|         0 |  200001 | root      | *0af11cffe7f9c8fb40c0aa05f9e6e8158667de8f |
|         0 |  500003 | monitor   | *0af11cffe7f9c8fb40c0aa05f9e6e8158667de8f |
+-----------+---------+-----------+-------------------------------------------+
2 rows in set (0.01 sec)
mysql> select * from DBA_OB_TENANTS \G
*************************** 1. row ***************************
                 TENANT_ID: 1004
               TENANT_NAME: ocp_monitor
               TENANT_TYPE: USER
               CREATE_TIME: 2024-06-15 15:51:26.229281
               MODIFY_TIME: 2024-06-15 15:52:01.592136
              PRIMARY_ZONE: RANDOM
                  LOCALITY: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
         PREVIOUS_LOCALITY: NULL
        COMPATIBILITY_MODE: MYSQL
                    STATUS: NORMAL
             IN_RECYCLEBIN: NO
                    LOCKED: NO
               TENANT_ROLE: PRIMARY
         SWITCHOVER_STATUS: NORMAL
          SWITCHOVER_EPOCH: 0
                  SYNC_SCN: 1718463690575323713
            REPLAYABLE_SCN: 1718463690575323713
              READABLE_SCN: 1718463690575323713
        RECOVERY_UNTIL_SCN: 4611686018427387903
                  LOG_MODE: NOARCHIVELOG
ARBITRATION_SERVICE_STATUS: DISABLED
                  UNIT_NUM: 1
                COMPATIBLE: 4.3.0.1
                 MAX_LS_ID: 1003
1 row in set (0.05 sec)

get了个新技能。
alter system change tenant

我一直没有找到这个命令。。以为没有呢。看oracle 的cdb都可以切换到pdb下,我还说ob咋不搞一个呢。
刚试了下,这个命令只能在连observer的时候可以使用,连OBProxy不能使用。

创建租户没问题,都是你指定的ocp_meta和ocp_monitor。
databae的问题是你配置的ocp_meta_db格式不对。导致使用了默认的ocp_express数据库。

转半天终于打开github了。确认了确实是你yaml文件格式的问题。
ocp_meta_db和ocp_meta_tenant是一个层级的参数。
你把ocp_meta_db配置到ocp_meta_tenant下一层去了。

这是官方的example里面的参数模板:

看来是真的搞错了!