# 如何连接租户

OceanBase 开源版的租户只兼容 MYSQL ，连接协议兼容 MYSQL 5.6 。因此 MYSQL 命令行客户端或者图形化工具理论上也是能连接 OceanBase 的租户。此外，OceanBase 也提供专属的命令行客户端工具 OBCLIENT 和 图形化客户端工具 ODC 。

## MYSQL 客户端连接

OceanBase MySQL 租户支持传统 MySQL 客户端连接，连接方式基本不变，跟传统 MySQL 不一样的地方是用户名的格式。

示例：

```bash
mysql -h172.20.249.50 -uroot@sys#obdemo -P2883 -p4S9wDbSr -c -A oceanbase

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.6.25 OceanBase 3.1.0 (r3-b20901e8c84d3ea774beeaca963c67d7802e4b4e) (Built Aug 10 2021 08:10:38)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MySQL [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| SYS                |
| LBACSYS            |
| ORAAUDITOR         |
| test               |
+--------------------+
7 rows in set (0.008 sec)

```

备注：

+ `-h`：提供 OceanBase 数据库连接 IP，通常是一个 OBProxy 地址。
+ `-u`：提供租户的连接账户，格式有两种：`用户名@租户名#集群名` 或者 `集群名:租户名:用户名` 。MySQL 租户的管理员用户名默认是 root 。
+ `-P`：提供 OceanBase 数据库连接端口，也是 OBProxy 的监听端口，默认是2883，可以自定义。
+ `-p`：提供账户密码，为了安全可以不提供，改为在后面提示符下输入，密码文本不可见。
+ `-c`：表示在 MySQL 运行环境中不要忽略注释。
+ `-A`：表示在 MySQL 连接数据库时不自动获取统计信息。

oceanbase：访问的数据库名，可以改为业务数据库。

新创建的业务租户的管理员（`root`）密码默认是空的。需要改密码。

```bash
$ strings /dev/urandom |tr -dc A-Za-z0-9 | head -c8; echo
bJVqqEVt

 mysql -h172.20.249.50 -uroot@obmysql#obdemo -P2883 -p -c -A oceanbase 
 MySQL [oceanbase]> alter user root identified by 'bJVqqEVt' ;
Query OK, 0 rows affected (0.118 sec)

```

如果没有安装 MYSQL 客户端，可以安装 `mariadb-server` 。MySQL 官方 8.0 的客户端连接协议在密码处调整了逻辑，导致无法通过早期的 OBPROXY 连接到 OceanBase 的MySQL 租户。会报密码错误。可以通过加选项 `--default-auth=mysql_native_password` 解决这个问题。

```bash
# 安装 mariadb 
sudo yum -y install mariadb-server.x86_64

# 或者 
# 安装官方 mysql 客户端
sudo yum -y install mysql.x86_64

mysql -h172.20.249.50 -uroot@obmysql#obdemo -P2883 -pbJVqqEVt -c -A --default-auth=mysql_native_password  oceanbase

```

注：OBPROXY 2.0 版本修复了这个问题。

## OBCLIENT 客户端连接

OceanBase 还提供专用的命令行客户端工具，名字：`obclient` 。使用方法跟 `mysql` 命令一样。

示例：

```bash
obclient -h172.20.249.50 -uroot@obmysql#obdemo -P2883 -pbJVqqEVt -c -A oceanbase

输出：
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.6.25 OceanBase 3.1.0 (r3-b20901e8c84d3ea774beeaca963c67d7802e4b4e) (Built Aug 10 2021 08:10:38)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MySQL [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.004 sec)
```

## OceanBase 连接驱动（`JDBC`）

OceanBase 支持的应用目前主要是 `Java` 和 `C/C++` 。

+ Java 语言
MySQL 官方 JDBC 驱动下载地址：[MySQL Connector/J 5.1.46](https://downloads.mysql.com/archives/c-j/)  。
OceanBase 官方 JDBC 驱动下载地址：[OceanBase-Client](https://help.aliyun.com/document_detail/212815.html) 。

+ C 语言
具体驱动说明请参考官网文档：[OceanBase Connector/C 简介](https://open.oceanbase.com/docs/connector-c/connector-c/V2.0.0/introduction-to-oceanbase-connector-c)
下载地址：[OceanBase Connector/C 下载](https://github.com/oceanbase/obconnector-c)

## DBEAVER 客户端连接

DBeaver 是一款通用的数据库客户端工具，其原理是使用各个数据库提供的 JDBC 驱动连接数据库，支持常见的关系型数据库、非关系型数据库、分布式数据库等等。使用 OceanBase 提供的 JDBC 驱动 或者 MySQL 官方驱动 ，DBeaver 也可以连接 OceanBase 的MySQL 租户。

官方下载地址：`https://dbeaver.io/download/` 。

DBeaver 连接 OceanBase 的时候选择“MySQL”数据库类型。第一次使用会自动下载官方 MySQL 驱动。
连接配置页面如下，跟 MySQL 不一样的地方就是连接端口默认是 `2883` 以及 用户名格式是：`用户名@租户名#集群名` 或 `集群名:租户名:用户名` 。

![DBeaver 连接](https://cdn.nlark.com/yuque/0/2021/jpeg/383093/1638764313065-8aecc5eb-cf65-4b1b-9a50-f3a188c7925f.jpeg)

## ODC 客户端连接

OceanBase 提供官方图形化客户端工具 `OceanBase Developer Center`，简称 `ODC`。这个产品在官方网站上有介绍：[什么是 OceanBase 开发者中心](https://www.oceanbase.com/docs/oceanbase-developer-center/odc/V3.1.0/what-is-oceanbase-developer-center) 。

ODC 下载地址在阿里云上：[下载客户端版 ODC](https://help.aliyun.com/document_detail/212816.html?spm=a2c4g.11186623.6.848.2cb5535fzdJK9X) 。

![odc new connection](https://cdn.nlark.com/yuque/0/2021/jpeg/383093/1638762959694-eb3aa0ea-4a6a-4c2a-a4d9-d1ddda8cdcb2.jpeg)

![odc new connection2](https://cdn.nlark.com/yuque/0/2021/jpeg/383093/1638762959694-eb3aa0ea-4a6a-4c2a-a4d9-d1ddda8cdcb2.jpeg)

保存连接后，打开连接，即进入工作界面。
![odc new connection3](https://cdn.nlark.com/yuque/0/2021/jpeg/383093/1638762959731-d5853a7c-9714-4bd7-a092-0c7d65f0215f.jpeg)

目前 ODC 是对 OceanBase 适配性最好的客户端工具。
