
# 使用MySQL客户端连接Doris普通集群
Doris支持MySQL协议，兼容MySQL生态的命令行工具、JDBC/ODBC和各种可视化工具。本章节以MySQL 5.x客户端连接Doris集群为例。
#### 使用限制
- Doris集群与弹性云服务器具有相同区域、可用区、VPC。
- Doris集群与弹性云服务器具有相同安全组。
- 弹性云服务器安全组中添加本地主机IP地址。
 
 #### 手动安装客户端
1. 下载[MySQL客户端](https://downloads.mysql.com/archives/community/)，根据实际情况选择版本。以MySQL 5.x客户端、操作系统Linux - Generic为例。
   
   ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002521404600.png "点击放大")
   
   
2. 准备Linux弹性云服务器，具体操作请见[准备弹性云服务器](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0227.html)章节。
3. 安装客户端，连接集群。 
   1. 使用SSH登录工具，通过弹性IP远程登录到Linux弹性云服务器。 具体登录操作步骤请参见弹性云服务器《用户指南》中的" [SSH密码方式登录](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)"章节。
      
   
   2. 进入SSH工具的根目录。
      ```
      cd /
      ```
      
   
   3. 在根目录中新建一个文件夹，将[步骤1]中下载的安装包上传到新建文件夹中。
      ```
      mkdir 文件夹名
      ```
      
   
   4. 执行以下命令解压安装包。\<客户端安装包存放路径\>请替换为实际的客户端存放路径。
      gz压缩包解压命令：
      ```
      cd <客户端安装包存放路径>
      tar -xzvf 客户端压缩包名
      ```
      xz压缩包解压命令：
      ```
      cd <客户端安装包存放路径>
      tar -xvf 客户端压缩包名
      ```
      
   
   5. 进入bin目录。
      "mysql-5.7.22-linux-glibc2.12-x86_64"替换为实际解压版本的文件夹。
      ```
      cd mysql-5.7.22-linux-glibc2.12-x86_64/bin/
      ```
      
   
   6. 然后执行下面的命令连接Doris集群。
      ```
      ./mysql -uadmin -ppassword -h集群内网地址 -P9030
      ```
      表1参数描述 
      | 参数               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                             |
      |:---|:---|
      | ./mysql          | 这是MySQL客户端工具，Doris兼容MySQL协议，所以可以使用MySQL客户端来连接Doris集群。                                                                                                                                                                                                                                                                                                                                                                          |
      | -uadmin          | - -u是user的缩写，指定连接的用户名。  - admin是用户名，是Doris的默认管理员账户。此处的用户名也可用新建的用户名。                                                                                                                                                               |
      | -p***password*** | - -p是password的缩写，指定连接密码。  - ***password***为用户密码，如果有特殊符号，特殊符号前面需要\\进行转义，如果密码整体用单引号括起来，则特殊字符不需要转义。   注意：-p和密码之间没有空格。                                                                                                                   |
      | -h集群内网地址         | - -h是host的缩写，指定连接Doris集群地址。  - 集群内网地址应替换为Doris FE节点的内网IP地址或域名。 ![](https://support.huaweicloud.com/usermanual-cloudtable/zh-cn_image_0000002552552501.png "点击放大")    |
      | -P9030           | - -P是port的缩写，指定连接端口。  - 9030是Doris FE的MySQL协议端口，用于接收客户端的连接。                                                                                                                                                                        |
         
      
   
   
   
   
 
#### Doris入门使用
1. 创建一个数据库。
   ```
   CREATE DATABASE demo;
   ```
   
2. 创建数据表
   - 使用数据库。
     ```
     USE demo;
     ```
     
   
   
   
   - 创建表。
     ```
     CREATE TABLE IF NOT EXISTS demo.example_tbl
     (
         `user_id` LARGEINT NOT NULL COMMENT "用户id",
         `date` DATE NOT NULL COMMENT "数据插入日期时间",
         `city` VARCHAR(20) COMMENT "用户所在城市",
         `age` SMALLINT COMMENT "用户年龄",
         `sex` TINYINT COMMENT "用户性别",
         `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
         `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
         `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
         `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
     )
     AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
     DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
     PROPERTIES (
         "replication_allocation" = "tag.location.default:3"
     );
     ```
     
    
3. 插入数据。
   ```
   INSERT INTO demo.example_tbl (user_id,date,city,age,sex,last_visit_date,cost,max_dwell_time,min_dwell_time) VALUES('10000','2017-10-01','A','20','0','2017-10-01 07:00:00','35','10','2'),('10001','2017-10-01','A','30','1','2017-10-01 17:05:45','2','22','22'),('10002','2017-10-02','B','20','1','2017-10-02 12:59:12','200','5','5'),('10003','2017-10-02','C','32','0','2017-10-02 11:20:12','30','11','11'),('10004','2017-10-01','D','35','0','2017-10-01 10:00:15','100','3','3'),('10004','2017-10-03','D','35','0','2017-10-03 10:20:22','11','6','6');
   ```
   
4. 查询数据。
   - 完成了建表，数据导入，下面我们就可以体验Doris的数据快速查询分析能力。
     ```
     SELECT * FROM demo.example_tbl;
     ```
     显示结果如下：
     ```
     mysql> SELECT * FROM demo.example_tbl;                                                                                                                                                                      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     | user_id | date       | city | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
     +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     | 10000   | 2017-10-01 | A    |   20 |    0 | 2017-10-01 07:00:00 |   35 |             10 |              2 |
     | 10001   | 2017-10-01 | A    |   30 |    1 | 2017-10-01 17:05:45 |    2 |             22 |             22 |
     | 10002   | 2017-10-02 | B    |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
     | 10003   | 2017-10-02 | C    |   32 |    0 | 2017-10-02 11:20:12 |   30 |             11 |             11 |
     | 10004   | 2017-10-01 | D    |   35 |    0 | 2017-10-01 10:00:15 |  100 |              3 |              3 |
     | 10004   | 2017-10-03 | D    |   35 |    0 | 2017-10-03 10:20:22 |   11 |              6 |              6 |
     +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     6 rows in set (0.02 sec)
     ```
     
   
   - 查看指定城市信息。
     ```
     SELECT * FROM demo.example_tbl where city='B';
     ```
     显示结果如下：
     ```
     mysql> SELECT * FROM demo.example_tbl where city='B';
     +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     | user_id | date       | city | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
     +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     | 10002   | 2017-10-02 | B    |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
     +---------+------------+------+------+------+---------------------+------+----------------+----------------+
     1 row in set (0.10 sec)
     ```
     
    
5. 删除数据。
   1. 删除指定行数据。
      ```
      DELETE FROM demo.example_tbl WHERE user_id = 10003;
      ```
      显示结果如下：
      ```
      mysql> DELETE FROM demo.example_tbl WHERE user_id = 10003;
      Query OK, 0 rows affected (0.04 sec)
      {'label':'delete_77ed273a-a052-4d64-bac0-23916b698003', 'status':'VISIBLE', 'txnId':'39'}
      ```
      
   
   2. 删除表。
      ```
      DROP TABLE demo.example_tbl;
      ```
      显示结果如下：
      ```
      mysql> DROP TABLE demo.example_tbl;
      Query OK, 0 rows affected (0.01 sec)
      ```
      
    
 
