
# 使用MySQL客户端连接StarRocks普通集群
StarRocks支持MySQL协议，所以支持MySQL协议的客户端可以访问StarRocks集群。本章节以MySQL 5.x客户端连接StarRocks集群为例。
#### 准备工作
- 创建弹性云服务器，请参考[购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0112.html)章节。
- 创建StarRocks集群，请参考[创建StarRocks存算一体集群](https://support.huaweicloud.com/usermanual-cloudtable/cloudtable_01_0489.html)。
- 将本地主机IP地址加入ECS安全组中，保证本地主机可以访问ECS。
 
 #### 手动安装MySQL客户端
1. 下载[MySQL客户端](https://downloads.mysql.com/archives/community/)，根据实际情况选择版本。
2. 使用SSH登录工具，通过弹性IP远程登录到Linux弹性云服务器。具体登录操作步骤请参见弹性云服务器《用户指南》中的" [SSH密码方式登录](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)"章节。
3. 进入SSH工具的根目录。 
   ```
   cd /
   ```
   
   
4. 在根目录中新建一个文件夹，将[步骤1]中下载的安装包上传到新建文件夹中。
   
   ```
   mkdir 文件夹名
   ```
   
   
5. 登录后执行以下命令解压安装包。
   
   ```
   cd <客户端安装包存放路径>
   tar -xzvf 客户端压缩包名
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   操作[步骤]提到的"\<客户端安装包存放路径\>"请替换为实际的客户端存放路径。
   
   
6. 进入bin目录。 
   ```
   cd mysql-5.7.22-linux-glibc2.12-x86_64/bin/
   ```
   
   
7. 然后执行下面的命令连接StarRocks集群。 
   ```
   ./mysql -uadmin -ppassword -h集群内网地址 -P9030
   ```
   ![](https://support.huaweicloud.com/usermanual-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   - 集群内网地址：集群详情页面中集群访问地址，这里替换成您自己购买的集群的访问地址（FE节点的访问地址，都可以访问集群）。
   
   - ***password***为您购买集群时设置的密码，如果有特殊符号，特殊符号前面需要\\进行转义，如果密码整体用单引号括起来，则特殊字符不需要转义。
   
   - 端口：FE上的mysql server端口，参见[表1]。
    
    表1自定义安全组规则 
   | 方向  | 策略 | 协议端口/范围 | 类型        | 目的/源地址                        | 用途                  |
   |:---|:---|:---|:---|:---|:---|
   | 出方向 | 允许 | 全部      | IPv4/IPv6 | 0.0.0.0/0                     | 出方向放行。              |
   | 入方向 | 允许 | 9030    | IPv4/IPv6 | CloudTable StarRocks集群所在的安全组。 | FE上的mysql server端口。 |
   | 入方向 | 允许 | 8030    | IPv4/IPv6 | CloudTable StarRocks集群所在的安全组。 | FE上的http server端口。  |
   | 入方向 | 允许 | 8040    | IPv4/IPv6 | CloudTable StarRocks集群所在的安全组。 | BE上的http server的端口。 |
   | 入方向 | 允许 | 8050    | IPv4/IPv6 | CloudTable StarRocks集群所在的安全组。 | FE上的https server端口  |
      
   
   
 
#### StarRocks入门使用
- 数据库操作
  - 查看所有数据库。
    ```
    SHOW DATABASES;
    ```
    
  
  - 创建数据库。
    ```
    CREATE DATABASE db_name;
    ```
    
  
  - 使用数据库。
    ```
    USE db_name;
    ```
    
  
  - 删除数据库。
    ```
    DROP DATABASE db_name;
    ```
    
   
- 表操作
  - 查看数据库中所有表。
    ```
    SHOW TABLES;
    ```
    
  
  - 创建数据表。
    ```
    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        ...
    ) ENGINE=OLAP
    DISTRIBUTED BY HASH(column1) BUCKETS 10;
    ```
    创建表示例：
    ```
    CREATE TABLE IF NOT EXISTS table_test (
        event_time DATETIME NOT NULL COMMENT "datetime of event",
        event_type INT NOT NULL COMMENT "type of event",
        user_id INT COMMENT "id of user",
        device_code INT COMMENT "device code",
        channel INT COMMENT ""
    )
    DUPLICATE KEY(event_time, event_type)
    DISTRIBUTED BY HASH(user_id)
    PROPERTIES (
    "replication_num" = "3"
    );
    ```
    
  
  - 查看表结构。
    ```
    DESC table_name;
    ```
    
  
  - 删除数据表。
    ```
    DROP TABLE table_name;
    ```
    
  
  - 修改数据表名。
    ```
    ALTER TABLE old_name RENAME new_name;
    ```
    
   
- 数据查询
  - 基本查询。
    ```
    SELECT * FROM table_name LIMIT 10;
    ```
    
  
  - 条件查询。
    ```
    SELECT * FROM table_name WHERE column1 = 'value';
    ```
    
   
- 数据操作
  - 插入单条数据，执行INSERT INTO命令往指定表插入数据，需要指定表名、列、插入的具体值。
    ```
    INSERT INTO table_name VALUES (value1, value2, ...);
    ```
    - INSERT INTO：关键字，表示要执行插入操作。
    
    - table_name：要插入数据的目标表名。
    
    - VALUES：关键字，后面跟着要插入的值列表。
    
    - (value1, value2, ...)：要插入的实际值，必须与表的列顺序和数量匹配。
    
    - 使用示例：
      ```
      INSERT INTO employees (id, name, department, salary) VALUES (2, '李四', '市场部', 7800.00);
      ```
      
     
  
  - 批量插入数据，执行INSERT INTO命令往指定表插入数据，需要指定表名、列、插入的具体值。
    ```
    INSERT INTO table_name VALUES 
    (value1, value2, ...),
    (value1, value2, ...),
    ...;
    ```
    
  
  - 更新数据。
    ```
    UPDATE table_name SET column1 = value1 WHERE condition;
    ```
    
  
  - 删除数据。
    ```
    DELETE FROM table_name WHERE condition;
    ```
    
   
- 实用命令。
  - 查看建表语句。
    ```
    SHOW CREATE TABLE table_name;
    ```
    
  
  - 查看表大小。
    ```
    SHOW DATA FROM table_name;
    ```
    
  
  - 查看表的统计信息。
    ```
    SHOW TABLE STATUS LIKE 'table_name';
    ```
    
   
 
